【问题标题】:Running my file in node, terminal throwing error syntax error near unexpected token `('在节点中运行我的文件,终端在意外令牌 `(' 附近抛出错误语法错误
【发布时间】:2019-04-20 04:48:30
【问题描述】:

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

【问题讨论】:

标签: node.js


【解决方案1】:

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

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

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

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

只要去掉这个点(后面有空格)就可以了。

【讨论】:

  • 好消息:您已经解决了这个问题。坏消息:新错误,找不到模块。现在就开始着手解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多