【问题标题】:Does Mocha ignore --harmony option in mocha.opts?Mocha 是否忽略 mocha.opts 中的 --harmony 选项?
【发布时间】:2014-10-24 22:43:10
【问题描述】:

在我的测试目录中,我有一个文件mocha.opts,其中包含以下内容:

--harmony
--recursive
--growl
--reporter spec
--require should

当我运行mocha 时,我收到以下错误:

/project/server/utilities/encryption.js:3
const
^^^^^
SyntaxError: Use of const in strict mode.

这当然是因为我使用const 需要ES6 Harmony。当我运行mocha --harmony 时,我的测试执行得很好。我的mocha.opts 文件中的其他条目按预期工作。

mocha.opts 文件是否因为某种原因忽略了--harmony 参数?还是我做错了? Mocha 文档没有详细说明,我无法在这里或其他任何地方找到答案。

【问题讨论】:

    标签: javascript unit-testing mocha.js ecmascript-harmony


    【解决方案1】:

    提问者问:

    当我运行mocha --harmony 时,我的测试执行得很好。 [...]

    mocha.opts 文件是否因为某种原因忽略了--harmony 参数?

    是的,mocha.opts 忽略了 --harmony 参数。 --harmony 选项不是 Mocha 选项,而是 Node.js 选项。这是一个必须在 Node.js 开始执行之前传递的选项。但是,mocha.opts 是在 Node.js 启动后读取的,因此即使 Mocha 能够理解该选项,它也无法对此做任何事情。

    但是为什么它可以在命令行上运行呢?不应该是当我运行mocha --harmony时,Mocha必须先启动才能解析--harmony选项吗?不,因为mocha 是启动“真正的”摩卡咖啡的脚本。 shell 脚本检测到--harmony 并确保在启动“真正的”Mocha 时将其传递给 Node.js。

    【讨论】:

    • Nitpick - mocha 是一个调用真正 Mocha 的 js 脚本。它不是一个 shell 脚本。
    • mocha 可以使用execv() 将自己替换为“正确的节点”。每个人都一直这样做。
    【解决方案2】:

    不支持您可以包含在mocha.opts 中的内容。当您调用mocha 时,您会在命令行中添加很多内容。见this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2017-07-02
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多