【问题标题】:Destructuring works in OSX, fails on Linux解构在 OSX 中有效,在 Linux 上失败
【发布时间】:2016-04-17 07:38:08
【问题描述】:

我在我创建的一些 Mocha 测试中使用了一些 ES6 功能集,其中包括一些解构语句。这是一个例子:

const {logger, saveProxy, resolved, msg} = helpers;

我大部分时间都在 OSX 上运行这些测试脚本,它的运行就像一个魅力。但是因为 nodejs 服务使用了一些仅适用于 Unix 的二进制文件,所以我也需要在 Linux 中进行测试。没问题,我用 Vagrant VM 切换到 Linux 并指向完全相同的测试脚本并得到以下错误堆栈:

const {logger, saveProxy, resolved, msg} = helpers; 
      ^

SyntaxError: Unexpected token {
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:405: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 /usr/lib/node_modules/mocha/lib/mocha.js:216:27
    at Array.forEach (native)
    at Mocha.loadFiles (/usr/lib/node_modules/mocha/lib/mocha.js:213:14)
    at Mocha.run (/usr/lib/node_modules/mocha/lib/mocha.js:453:10)
    at Object.<anonymous> (/usr/lib/node_modules/mocha/bin/_mocha:393:18)
    at Module._compile (module.js:398:26)
    at Object.Module._extensions..js (module.js:405:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:430:10)
    at startup (node.js:141:18)
    at node.js:1003:3

在 Linux 和 OSX 中,我都在运行节点版本 5.4.0,因此解构应该不是问题。我无能为力,有人可以帮忙吗?

【问题讨论】:

    标签: node.js mocha.js ecmascript-6


    【解决方案1】:

    解构仍在 node.js 中进行,可以使用--harmony_destructuring 标志启用。

    您可能在两种环境中运行脚本的方式不同。您将哪些标志传递给节点运行时?

    您可以通过运行查看支持的 ES2015 功能列表:

    node --v8-options | grep harmony
    

    您会在此处看到哪些“正在进行中”,这意味着它们默认处于禁用状态。

    【讨论】:

    • 有趣,我还以为节点 5.x 支持破坏。知道为什么它适用于 OSX 而不是 Linux 吗?注意:两者的和声设置似乎相同。
    • 就像我说的,我会调查你是如何调用 node.js 的。你是直接通过命令行来做的吗?您能否确保它不是在节点可执行文件之上添加一些糖的脚本的别名或符号链接?
    • 完全一样;通过命令行或通过 gulp 任务完成
    • @ken:嗯,gulp 任务是做什么的?
    • 与命令行相同:mocha test/integration/3.\ verify.js ... 相当肯定这是一条死胡同。以同样的方式开始执行。没有开关、标志或 ENV 变量。在 gulp 的情况下,它“监视”更改的文件,然后运行它(或任何更改的文件)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2017-12-14
    • 2017-03-18
    • 2016-12-12
    相关资源
    最近更新 更多