[英]Running my file in node, terminal throwing error syntax error near unexpected token `('
我试图在我的 macbook 上的节点环境中运行一个文件。 我不断收到以下终端错误消息:
/.../filename.js: line 2: syntax error near unexpected token `('
/.../filename.js: line 2: `const fs = require('../build/index.js');'
代码:
#!/usr/bin/env node
const fs = require('../build/index.js');
我给出的命令是:
node index.js
(我知道文件名是相同的,但它调用的是不同的文件。)
我似乎无法弄清楚为什么它会找到额外的`.
我试过了:
更多背景知识,这是我选择的一个项目,这是我第一次尝试运行它。
编辑:index.js 的代码
'use strict';
var _child_process = require('child_process');
var _logger = require('./logger');
var _logger2 = _interopRequireDefault(_logger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var l = new _logger2.default();
l.log('Starting backup');
var wd = __dirname.split('/');
var basePath = wd.slice(0, wd.length - 1).join('/');
var execPath = basePath + '/path/filename.js';
var stdout = (0, _child_process.execSync)('. ' + execPath + ' -a ' + basePath + '/something.json -b ' + basePath + '/backups');
l.log(stdout);
问题是index.js
通过child_process.execSync()
方法调用filename.js
,这基本上是“使用 shell 执行这个文件并给我它的输出”。
你的filename.js
有一个 shebang,如果不是execSync()
第一个参数中的这个小点,它会做预期的(使用节点运行execSync()
。 它看起来像这样:
. /some/path/filename.js -a /some/path/something.json -b /some/path/backups
在sh
-shells 中.
是source
内置命令的简写,意思是“在 shell 中执行这个文件并返回它的退出代码”。 因此, filename.js
在 shell 中执行,而不是在节点中。
只需删除这个点(后面有空格),它就会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.