nodejs SyntaxError:意外的令牌

Fan*_*oos 2 node.js npm elasticsearch

elasticsearch-exporter用来从中导出数据Elasticsearch.

该工具最初是一个nodejs应用程序.

当我尝试使用以下命令node exporter.js使工具列表中的所有可用选项时,它会崩溃并出现以下异常

/home/me/storage/Elasticsearch-Exporter/log.js:54
exports.error = (...args) => !capture("ERROR", args) && console.log(timestamp() + util.format(...args).red);
                 ^^^

SyntaxError: Unexpected token ...
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/anas/storage/Elasticsearch-Exporter/exporter.js:9:11)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
Run Code Online (Sandbox Code Playgroud)

这是抛出异常的行

exports.error = (...args) => !capture("ERROR", args) && console.log(timestamp() + util.format(...args).red);
Run Code Online (Sandbox Code Playgroud)

我认为错误与nodejs的不同版本有关,但我不确定.

这是node --version命令的输出v4.2.6

这是npm --version命令的输出3.10.6

Val*_*Val 6

是的,确实...称为扩展运算符,仅在Node.js 6之后可用

elasticsearch-exporter项目在其package.json文件声明它仅适用于节点版本> 6

因此,既然您正在运行Node.js 4.2.6,您需要升级Node.js安装或分叉elasticsearch-exporter项目并修改它以使用Node.js 4.2.6.