Отмечает ли Mocha -harmony опцию в mocha.opts?

В моем тестовом каталоге у меня есть файл 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 не уточняют, и я не смог найти ответ здесь или где-либо еще.

Ответ 1

Спроситель спрашивает:

Когда я запускаю mocha --harmony, мои тесты выполняются просто отлично. [...]

По какой-либо причине файл mocha.opts игнорирует аргумент --harmony?

Да, mocha.opts игнорирует аргумент --harmony. Опция --harmony не является опцией Mocha, а параметром Node.js. Это опция, которая должна быть передана Node.js до ее запуска. Тем не менее, mocha.opts читается после Node.js, и даже если Моча смог понять этот вариант, он ничего не сможет с этим поделать.

Но почему это работает в командной строке? Если это не так, когда я запускаю mocha --harmony, Mocha должен сначала начать, прежде чем разбирать параметр --harmony? Нет, потому что mocha есть script, который запускает "настоящую" мокко. Оболочка script обнаруживает --harmony и гарантирует, что она будет передана в Node.js, когда она запустит "реальный" Mocha.

Ответ 2

Он не поддерживает то, что вы можете включить в mocha.opts. Вы много добавляете в командную строку, когда вызываете mocha. См. это.