Ошибка узла: "SyntaxError: неожиданный токен {" at "const {join, basename} = require ('path')" - PullRequest
1 голос
/ 27 февраля 2020

Мне нужно работать с приложением, основанным на ioni c framework v1 и Cordova 7.1, но при запуске Cordova с Node возникает следующая проблема:

$ cordova -v
/node_modules/cordova/node_modules/npm-normalize-package-bin/index.js:3
const {join, basename} = require('path')
      ^

SyntaxError: Unexpected token {
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (node_modules/cordova/node_modules/read-package-json/read-json.js:14:27)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)

Я установил Cordova с помощью этой команды:

npm install -g cordova@7.1.0

Для проекта требуются следующие версии, которые установлены на моем компьютере:

node -v
v5.12.0

npm -v
3.8.6

ionic -v
1.7.15

grunt --version
grunt-cli v0.1.13
grunt v0.4.5

bower -v
1.8.4

plugman -v
2.0.0

Кто-нибудь знает, в чем проблема? Я рад за любую помощь.

Ответы [ 3 ]

1 голос
/ 27 февраля 2020

Проблема в том, что nodejs v5.x не поддерживает деструктуризацию, которая используется в строке

const {join, basename} = require('path')

Подробнее о поддерживаемых js функциях в nodejs можно прочитать здесь, https://node.green/#ES2015 -syntax-деструктурирующий - декларации

1 голос
/ 27 февраля 2020

Cordova зависит от "init-package- json", который, в свою очередь, зависит от "read-package- json: 1 || 2".

Теперь произошло обновление для "read- package- json "несколько месяцев go, который вводит новую зависимость для" npm -normalize-package-bin ". Этот пакет использует синтаксическую конструкцию, которая, по-видимому, поддерживается не ранее узла 6.0.0.

Так что, если обновление узла не является опцией (что рекомендуется, так как узел 5 - 8 является окончанием срока службы) , вы можете установить это (также довольно устаревшее) cordova локально (внутри папки проекта) и переписать там зависимость read-package- json на npm i read-package-json@2.0.13.

Редактировать: Вызов cordova через npx: npx cordova -v

0 голосов
/ 02 марта 2020

Спасибо всем за полезные замечания, чтобы лучше понять причину.

К сожалению, обновление узла не было возможным. В конце я сравнил мою установку Cordova с товарищем по команде, у которого нет этой проблемы. Единственным отличием было то, что его 'cordova / node_modules / npm -normalize-package-bin' не присутствовал там, где выдается ошибка. Поэтому я удалил этот пакет из своей системы, чтобы решить проблему.

Может быть, это поможет кому-то еще.

...