在我的测试目录中,我有一个文件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
参数?或者我做错了吗?摩卡文档不详细说明,我无法在这里或其他任何地方找到答案。
答案 0 :(得分:18)
提问者问道:
当我运行
mocha --harmony
时,我的测试执行得很好。 [...]由于某种原因,
mocha.opts
文件是否会忽略--harmony
参数?
是的,mocha.opts
忽略--harmony
参数。 --harmony
选项不是Mocha选项,而是Node.js选项。这是一个必须在开始执行之前传递给Node.js 的选项。但是,在Node.js启动后会读取mocha.opts
,所以即使Mocha能够理解该选项,它也无法对它做任何事情。
但为什么它在命令行上运行?不应该是这样的情况,当我运行mocha --harmony
时,Mocha必须首先启动才能解析--harmony
选项吗?不,因为mocha
是启动“真正的”Mocha的脚本。 shell脚本检测--harmony
并确保在启动“真实”Mocha时将其传递给Node.js。
答案 1 :(得分:0)
您不能支持mocha.opts
中包含的内容。当您致电mocha
时,您可以在命令行中添加更多内容。请参阅this。