Nodejs“ SyntaxError:意外令牌。”

时间:2019-06-28 06:52:53

标签: node.js syntax-error

我正在尝试运行比特币洞察浏览器(https://www.dgbwiki.com/index.php?title=Running_your_own_Insight_explorer)。使用节点v0.10.48,但出现此错误(在互联网上找不到相同的问题):

digibyte@derecha-virtual-machine:~/insight$ /home/digibyte/.nvm/v0.10.48/bin/node ~/insight/node_modules/insight-bitcore-api/util/sync.js -D -v --rpc

/home/digibyte/insight/node_modules/insight-bitcore-api/node_modules/async/dist/async.js:52
    function apply(fn, ...args) {
                       ^
SyntaxError: Unexpected token .
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/digibyte/insight/node_modules/insight-bitcore-api/lib/HistoricSync.js:5:22)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)

违规行52位于此功能中:

function apply(fn, ...args) { // <- line 52
    return (...callArgs) => fn(...args,...callArgs);
}

我觉得还不错,我不知道节点为什么会出错。

3 个答案:

答案 0 :(得分:2)

Node.js 0.10.48不支持传播运算符。支持传播运算符的第一个Node.js版本是5,但是它已经过时了,不再维护。如果您已经在升级,我将升级到LTS仍支持的较新版本之一。

答案 1 :(得分:1)

根据https://node.green/#ES2015-syntax-rest-parameters,节点v0.10.48不支持rest参数(...args)。

您应该使用较新版本的节点(至少v6.4.0作为默认支持,或者至少v4.9.1带有--harmony标志(node --harmony))

答案 2 :(得分:-1)

Apply将数组作为第二个参数。在这里,spread运算符(...)对元素进行布局,因此,您无需将数组传递给函数,而是将参数以逗号分隔。

尝试使用.call代替.apply,或通过args代替...args