在节点中运行我的文件,终端在意外令牌'('

时间:2019-04-19 19:17:07

标签: node.js

我正在尝试在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);

1 个答案:

答案 0 :(得分:1)

问题是index.js通过filename.js方法调用child_process.execSync(),这基本上是“使用shell执行此文件并将其输出给我”。

您的filename.js有一个shebang,如果不是第一个参数execSync()中的这个小点,它就会按预期运行(使用节点运行)。看起来像这样:

. /some/path/filename.js -a /some/path/something.json -b /some/path/backups

sh-shell中,.source内置命令的简写,表示“在shell中执行此文件 并返回其退出代码” 。因此,filename.js在shell中执行,而不在节点中 not 执行。

只需删除该点(其后有空格),它将起作用。