2014-10-10 9 views
5

Wie der Titel, ich versuche, einige AMD-Module in ES6 JS geschrieben, läuft von nodejs.Wie man Harmonie/ES6/ECMAScript 6 JavaScript testen?

Ich versuchte zuerst mit Intern: auch nach dem Freigeben --harmony in Nodejs, endete ich mit Blick auf Interns Abhängigkeitskette, wo ich nicht in der Lage, Harmonie in z. Istanbul, esprima und andere (Ich öffnete eine issue dafür).

Ich bin dann auf mocha, und hier bin ich stecken geblieben ... seltsam. Ich ermöglichte Harmonie sowohl für NodeJS und Mokka selbst, hier ist der package.json Testskript:

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

, die ich von Eingabeaufforderung als npm test my_test_folder laufen. Trotzdem gehen einige ES6-Konstrukte (wie const) in Ordnung, aber dann erstickt sie an der Destrukturierungsaufgabe. Hier sind die ersten Ausgangsleitungen:

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

Ich habe auch dieses SO thread geprüft und gehört zu transpilers, aber ich weiß wirklich nicht, ob sie arbeiten konnte, und ich versuche jetzt zu transpilers machen arbeiten in dieser Fall.

Haben Sie eine Idee, wie Sie dies lösen können, ohne alle ES6-Bits im Code zu ändern? TA.

+0

Können Sie Harmony-Funktionen verwenden, wenn Sie Mocha nicht verwenden? Wenn es nicht funktioniert, wenn Sie Mocha nicht verwenden, funktioniert es nicht mit Mocha. – Louis

+0

Guter Punkt, obwohl der Code Teil eines Thunderbird-Plugins ist, in dem Harmoniefunktionen funktionieren. Hier versuche ich, Tests von (Knoten) Kommandozeile auszuführen, so dass Probleme jetzt herauskommen. – superjos

+0

Da niemand es erwähnt, überprüfen Sie http://kangax.github.io/compat-table/es6/ –

Antwort

1

V8 implementiert das Destrukturieren noch nicht, daher wird es für einige Zeit nicht im Knoten verfügbar sein. Block Scoping (einschließlich const) ist meistens implementiert, aber sei dir bewusst, dass eine Version von const vor ES6 immer verfügbar war, also solltest du vielleicht überprüfen, was du tatsächlich beobachtest - du könntest Let-Deklarationen für weniger Mehrdeutigkeiten versuchen.

+0

Vielen Dank für Ihr Feedback. Am Anfang habe ich gerade versucht, Mokka zu laufen (also mit * plain * node) und ich habe Fehler bei 'const' bekommen. Dann habe ich '--harmony' aktiviert, als ich den Knoten aufgerufen habe, und ich ging zur nächsten Ausgabe. Jedenfalls versuche ich, auf ES5 zu transpilieren, bevor ich Mokka betreibe. – superjos

4

Ich habe mit

npm install mocha-traceur 

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

und es war wie ein Zauber funktioniert!

+0

danke, ich werde das versuchen sobald ich wieder so verrückt bin in die Thunderbird Entwicklung zu tauchen :) – superjos