Nodejs "SyntaxError: Неожиданный токен." - PullRequest
1 голос
/ 28 июня 2019

Я пытаюсь запустить Bitcoin Insight Explorer (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 ]

2 голосов
/ 28 июня 2019

Node.js 0.10.48 не поддерживает оператор распространения. Первая версия Node.js, поддерживающая оператор распространения, была 5, но она устарела и больше не поддерживается. Если вы уже обновляетесь, я бы обновился до одной из более новых версий, которые все еще поддерживаются в LTS.

1 голос
/ 28 июня 2019

Согласно https://node.green/#ES2015-syntax-rest-parameters, узел v0.10.48 не поддерживает остальные параметры (...args).

Вы должны использовать более новую версию узла (по крайней мере v6.4.0 в качестве поддержки по умолчанию или по крайней мере v4.9.1 с флагом --harmony (node --harmony))

0 голосов
/ 28 июня 2019

Применить принимает массив в качестве второго аргумента.Здесь оператор spread (...) размещает элементы, и поэтому вы не передаете массив в функцию, а в основном разделяете запятыми аргументы.

Попробуйте использовать .call вместо .apply или передать args вместо ...args.

...