【问题标题】:How to test harmony / ES6 / ECMAScript 6 JavaScript?如何测试 Harmony / ES6 / ECMAScript 6 JavaScript?
【发布时间】:2014-12-05 22:10:45
【问题描述】:

根据标题,我正在尝试测试一些用 ES6 JS 编写的 AMD 模块,从 nodejs 运行。

我首先尝试使用Intern:即使在nodejs 中启用--harmony 之后,我最终还是面临实习生的依赖链,我无法在例如启用Harmony。 Istanbulesprima 和其他人(为此我开了一个issue)。

然后我转到mocha,然后我就卡在这里了……奇怪。我为 nodejs 和 mocha 本身都启用了 Harmony,这是 package.json 测试脚本:

"test": "node --harmony node_modules\\mocha\\bin\\mocha tests --harmony --recursive"

我从命令提示符以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...]

我还检查了这个SO thread 并听说了转译器,但我真的不知道它们是否可以工作,我现在正试图让转译器在这种情况下工作。

关于如何解决这个问题的任何想法,而无需更改代码中传播的所有 ES6 位?助教。

【问题讨论】:

  • 在不使用 Mocha 的情况下,您可以使用 Harmony 的任何功能吗?如果在不使用 Mocha 时它不起作用,则它不适用于 Mocha。
  • 好点,虽然代码是 Thunderbird 插件的一部分,和谐功能在其中工作。在这里,我正在尝试从(节点)命令行运行测试,所以现在出现了问题。
  • 由于没有人提及,请查看kangax.github.io/compat-table/es6

标签: javascript mocha.js intern ecmascript-6 ecmascript-harmony


【解决方案1】:

我一直在用

npm install mocha-traceur

mocha ./tests/* --compilers js:mocha-traceur 

而且它一直在发挥作用!

【讨论】:

  • 谢谢,一旦我再次如此疯狂地投入到 Thunderbird 开发中,我会尽快尝试 :)
【解决方案2】:

V8 还没有实现解构,所以暂时不能在 node 中使用。块作用域(包括 const)主要是实现的,但请注意 const 的 ES6 之前版本始终可用,因此您可能需要仔细检查您实际观察到的内容——您可以尝试“让”声明以减少歧义。

【讨论】:

  • 感谢您的反馈。一开始我只是尝试运行 mocha(所以使用 plain 节点),我在const 上遇到错误。然后我在调用节点时启用了--harmony,然后我转到下一个问题。无论如何,我正在尝试在运行 mocha 之前转译为 ES5。
猜你喜欢
  • 2014-03-02
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多