2014-10-10 13 views
5

Zgodnie z tytułem próbuję przetestować niektóre moduły AMD napisane w ES6 JS, działające od nodejs.Jak testować harmonię/ES6/ECMAScript 6 JavaScript?

Najpierw próbowałem z Intern: nawet po włączeniu --harmony w nodejs, skończyłem w obliczu łańcucha zależności Intern, gdzie nie byłem w stanie włączyć Harmony w np. Stambuł, esprima i inne (otworzyłem dla tego issue).

Potem przeniosłem się na mocha, a tutaj utknąłem ... dziwnie. Włączyłem Harmony zarówno dla nodejs i samego mokka, oto skrypt package.json Test:

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

że biegnę z wiersza poleceń jako npm test my_test_folder. Mimo to niektóre konstrukcje ES6 (takie jak const) mijają, ale potem dławi się przy przypisywaniu destrukturyzacji. Oto pierwsze linie wyjściowe:

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...] 

Ja również sprawdzone tej SO thread i słyszał o transpilers, ale ja naprawdę nie wiem, czy mogą pracować i jestem teraz próbuje zrobić transpilers pracować w ta sprawa.

Każdy pomysł na rozwiązanie tego problemu bez uciekania się do zmiany wszystkich bitów ES6 rozłożonych w kodzie? TA.

+0

Czy możesz korzystać z funkcji harmonii, gdy nie używasz Mocha? Jeśli nie działa, gdy nie używasz Mocha, nie będzie działać z Mocha. – Louis

+0

Dobrze, chociaż kod jest częścią wtyczki Thunderbird, w której działają funkcje harmonii. Tutaj próbuję uruchomić testy z wiersza poleceń (węzeł), więc problemy wychodzą teraz. – superjos

+0

Ponieważ nikt o tym nie wspomniał, sprawdź http://kangax.github.io/compat-table/es6/ –

Odpowiedz

1

V8 nie implementuje jeszcze destrukturyzacji, więc przez pewien czas nie będzie dostępny w węźle. Zablokowanie zakresu (w tym const) jest w większości implementowane, ale pamiętaj, że zawsze była dostępna wersja const dla wersji przed ES6, więc możesz dwukrotnie sprawdzić, co faktycznie obserwujesz - możesz wypróbować deklaracje "niech" za mniej niejednoznaczności.

+0

Dziękujemy za opinię. Na samym początku po prostu próbowałem uruchomić mocha (tak z * plain * node) i dostałem błąd na 'const'. Następnie włączyłem '--harmony' podczas wywoływania węzła, i przeszedłem do następnego wydania. W każdym razie próbuję przejść do ES5 przed uruchomieniem mocha. – superjos

4

Używam

npm install mocha-traceur 

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

i to pracuje jak marzenie!

+0

dziękuję, wypróbuję to, gdy tylko znów będę tak szalony, aby zagłębić się w rozwój Thunderbirda :) – superjos