我let在Node v0.10.12中玩弄.使用该--harmony标志,以下代码会产生语法错误:
for (let i = 0; i < 2; i += 1) {
console.log('i', i);
}
Run Code Online (Sandbox Code Playgroud)
SyntaxError:非法让扩展模式外的声明
但是,如果我也使用该--use-strict标志,则代码按预期运行.
为什么只使用--harmony标志时会抛出语法错误?什么是扩展模式?与严格模式有什么联系?
根据标题,我正在尝试测试一些用nodejs运行的ES6 JS编写的AMD模块.
我首先尝试使用Intern:即使--harmony在nodejs中启用后,我最终还是面对了Intern的依赖链,我无法在例如伊斯坦布尔,esprima和其他人中启用Harmony (我为此开了一个问题).
然后我转移到摩卡上,在这里我被卡住...... 奇怪的是.我为nodejs和mocha本身启用了Harmony,这是package.json测试脚本:
"test": "node --harmony node_modules\\mocha\\bin\\mocha tests --harmony --recursive"
Run Code Online (Sandbox Code Playgroud)
我从命令提示符运行为npm test my_test_folder.仍然,一些ES6构造(如const)传递确定,但随后它在解构赋值时窒息.这是第一个输出行:
const { log, dir } = require('../consoleLogger.js');
^
SyntaxError: Unexpected token {
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
[...continues...]
Run Code Online (Sandbox Code Playgroud)
我也检查了这个SO线程并听说过转发器,但我真的不知道它们是否可以工作,我现在正试图让转换器在这种情况下工作.
关于如何解决这个问题的任何想法,而无需改变代码中传播的所有ES6位?TA.