OSX中的解构工作在Linux上失败

时间:2016-01-12 15:42:54

标签: node.js mocha ecmascript-6

我在我创建和包含的一些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,因此解构不应成为问题。我的智慧结束了,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

node --v8-options | grep harmony

在那里,你会看到哪些是&#34;正在进行中&#34;,这意味着他们默认会被禁用。