【问题标题】:Node error: "SyntaxError: Unexpected token {" at "const {join, basename} = require('path')"节点错误:“SyntaxError: Unexpected token {” at “const {join, basename} = require('path')”
【发布时间】:2020-06-11 15:06:22
【问题描述】:

我需要使用基于 ionic 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

有人知道问题出在哪里吗?我很高兴有任何帮助。

【问题讨论】:

    标签: node.js cordova ionic-framework npm


    【解决方案1】:

    Cordova 依赖于“init-package-json”,而后者又依赖于“read-package-json: 1 || 2”。

    现在几个月前对“read-package-json”进行了更新,引入了对“npm-normalize-package-bin”的新依赖。这个包使用了在节点 6.0.0 之前显然不支持的语法结构。

    因此,如果更新节点不是一个选项(建议这样做,因为节点 5 - 8 已报废),您可以在本地(项目文件夹内)安装这个(也相当过时的)cordova 并覆盖npm i read-package-json@2.0.13 那里的 read-package-json 依赖项。

    编辑:通过 npx 调用cordova:npx cordova -v

    【讨论】:

      【解决方案2】:

      问题是nodejs v5.x不支持解构,在行里用到了

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

      您可以在此处阅读有关 nodejs 中支持的 js 功能的更多信息,https://node.green/#ES2015-syntax-destructuring--declarations

      【讨论】:

        【解决方案3】:

        感谢大家为更好地了解原因提供的有用意见。

        不幸的是,更新节点不是一种选择。最后,我将我的 Cordova 安装与没有此问题的队友进行了比较。唯一的区别是他的“cordova/node_modules/npm-normalize-package-bin”在触发错误的地方不存在。所以我从我的系统中删除了这个包来解决这个问题。

        也许这对其他人有帮助。

        【讨论】:

          猜你喜欢
          • 2016-10-04
          • 2022-01-22
          • 1970-01-01
          • 2016-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-03
          • 2020-11-02
          相关资源
          最近更新 更多