2014-10-10 83 views
5

按照標題,我試圖測試一些用ES6 JS編寫的AMD模塊,從nodejs運行。如何測試和聲/ ES6/ECMAScript 6 JavaScript?

我首先嚐試了Intern:即使在nodejs中啓用--harmony後,我最終面臨Intern的依賴鏈,在那裏我無法啓用Harmony。 伊斯坦布爾,esprima和其他人(我爲此打開了issue)。

然後我搬到了mocha,這裏我卡住了...... 奇怪。我啓用了和諧既爲和的NodeJS本身摩卡,這裏的package.json測試腳本:

"test": "node --harmony node_modules\\mocha\\bin\\mocha tests --harmony --recursive" 

,我從命令提示符下運行的npm test my_test_folder。儘管如此,一些ES6結構(例如const)通過確定,但隨後它在解構賦值方面產生扼殺。以下是第一輸出線:

const { log, dir } = require('../consoleLogger.js'); 
    ^
SyntaxError: Unexpected token { 
    at Module._compile (module.js:439:25) 
    at Object.Module._extensions..js (module.js:474:10) 
    [...continues...] 

我也查了這個SO thread和聽說transpilers, ,但我真的不知道,如果他們可以工作 ,現在我試圖讓transpilers在工作這個案例。

有關如何解決這個問題的任何想法,而不是訴諸於改變代碼中的所有ES6位? TA。

+0

在不使用摩卡時,您是否可以使用任何和聲的功能?如果在不使用摩卡時不起作用,它將不適用於摩卡。 – Louis 2014-10-10 22:58:54

+0

好點,儘管代碼是Thunderbird插件的一部分,其中和聲功能正在工作。在這裏,我試圖從(節點)命令行運行測試,所以問題現在出來了。 – superjos 2014-10-13 00:15:22

+0

由於沒有人提到它,請查看http://kangax.github.io/compat-table/es6/ – 2014-10-13 00:22:37

回答

1

V8還沒有實現解構,所以它在節點中暫時不可用。塊定界(包括const)大部分都是實現的,但要注意,ES6之前的ES6版本始終可用,因此您可能需要仔細檢查您實際觀察的內容 - 您可以嘗試使用「let」聲明以減少模糊性。

+0

感謝您的反饋意見。在剛開始的時候我只是試着運行mocha(所以用* plain * node),而我在'const'上出錯。然後我在調用節點時啓用了'--harmony',並且我轉向下一個問題。無論如何,我正在嘗試在運行摩卡咖啡之前將其轉換爲ES5。 – superjos 2014-10-13 00:13:26

4

我一直在使用

npm install mocha-traceur 

mocha ./tests/* --compilers js:mocha-traceur 

,並一直工作就像一個魅力!

+0

謝謝,我會嘗試一旦我再次如此瘋狂以潛入Thunderbird開發:) – superjos 2015-03-25 18:14:03