2014-08-31 55 views
11

在我的測試目錄中,我有一個文件mocha.opts包含以下內容:摩卡是否忽略了mocha.opts中的--harmony選項?

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

當我運行mocha,我得到以下錯誤:

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

這是當然的,因爲我使用const需要ES6和諧。當我運行mocha --harmony時,我的測試執行得很好。我的mocha.opts文件中的其他條目按預期工作。

由於某種原因,mocha.opts文件是否忽略--harmony參數?還是我做錯了?摩卡文檔沒有詳細說明,我也無法在這裏或其他任何地方找到答案。

回答

18

提問者問:

When I run mocha --harmony , my tests execute just fine. [...]

Does the mocha.opts file ignore the --harmony argument for some reason?

是,mocha.opts忽略--harmony說法。 --harmony選項不是Mocha選項,而是Node.js選項。這是一個必須它開始執行前被傳遞到Node.js的的選項。然而,Node.js的開始之後mocha.opts被讀取並因此即使摩卡是能夠理解的選項,這將不能夠做任何事情。

但爲什麼它的命令行上運行?當我運行mocha --harmony時,摩卡是不是應該在解析--harmony選項之前首先啓動?不,因爲mocha是啓動「真正」摩卡的腳本。 shell腳本檢測到--harmony並確保它在啓動「真正」Mocha時傳遞給Node.js。

+0

精闢解釋,謝謝。 – user3112401 2015-01-08 15:11:04

+1

Nitpick - 摩卡是一個叫做真正摩卡的js腳本。它不是一個shell腳本。 – manojlds 2015-01-25 21:57:51

+1

摩卡可以使用'execv()'本身與「適當的節點」取代。每個人都會這麼做。 – toriningen 2015-06-04 20:34:22

0

它不支持的東西,你可以包括mocha.opts。當您致電mocha時,您可以添加到命令行中。請參閱this