摩卡是否忽略mocha.opts中的--harmony选项?

use*_*401 11 javascript unit-testing mocha.js ecmascript-harmony

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

--harmony
--recursive
--growl
--reporter spec
--require should
Run Code Online (Sandbox Code Playgroud)

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

/project/server/utilities/encryption.js:3
const
^^^^^
SyntaxError: Use of const in strict mode.
Run Code Online (Sandbox Code Playgroud)

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

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

Lou*_*uis 18

提问者问:

当我跑步时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.