我在我创建和包含的一些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
,因此解构不应成为问题。我的智慧结束了,有人可以帮忙吗?
答案 0 :(得分:2)
在node.js中,解构仍在进行中,并且可以使用--harmony_destructuring
标志启用。
您可能在两种环境中以不同方式运行脚本。您传递给节点运行时的哪些标志?
您可以通过运行以下命令查看支持的ES2015功能列表:
node --v8-options | grep harmony
在那里,你会看到哪些是&#34;正在进行中&#34;,这意味着他们默认会被禁用。