2014-10-10 19 views
5

Come per il titolo, sto provando a testare alcuni moduli AMD scritti in ES6 JS, in esecuzione da nodejs.Come testare l'armonia/ES6/ECMAScript 6 JavaScript?

Ho provato prima con Intern: anche dopo aver attivato --harmony in nodejs, ho finito di fronte catena dipendenza Intern, dove non era in grado di consentire in armonia esempio Istanbul, esprima e altri (ho aperto uno issue per quello).

Ho poi spostato su mocha, e qui mi sono bloccato ... stranamente. Ho permesso armonia sia per nodejs e moka per sé, ecco lo script di test package.json:

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

che ho eseguito dal prompt dei comandi come npm test my_test_folder. Ancora, alcuni costrutti ES6 (come const) passano bene, ma poi si soffoca sul compito distruttivo. Ecco le prime linee di uscita:

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

Inoltre ho controllato questo SO thread e sentito parlare di transpilers, , ma io non so davvero se potessero lavorare e ora sto cercando di far lavorare in transpilers questo caso.

Qualche idea su come risolvere questo problema, senza ricorrere a modificare tutti i bit ES6 diffusi nel codice? TA.

+0

Sei in grado di utilizzare una delle funzionalità di armonia quando non si utilizza Mocha? Se non funziona quando non si utilizza Mocha, non funzionerà con Mocha. – Louis

+0

Un buon punto, anche se il codice fa parte di un plug-in Thunderbird, in cui funzionano le funzionalità di armonia. Qui sto cercando di eseguire test dalla riga di comando (nodo), quindi i problemi vengono fuori ora. – superjos

+0

Poiché nessuno lo ha menzionato, dai un'occhiata a http://kangax.github.io/compat-table/es6/ –

risposta

1

V8 non implementa ancora la destrutturazione, quindi non sarà disponibile nel nodo per un po '. L'ambito dei blocchi (compresi i const) è in gran parte implementato, ma tieni presente che una versione pre-ES6 di const è sempre disponibile, quindi potresti voler ricontrollare ciò che stai effettivamente osservando - puoi provare a "lasciare" le dichiarazioni con meno ambiguità.

+0

Grazie per il feedback. All'inizio ho appena provato a eseguire mocha (quindi con * plain * node) e ho avuto errori su 'const'. Quindi ho abilitato '--harmony' quando invoco il nodo, e sono passato al prossimo numero. Ad ogni modo, sto cercando di eseguire il transpiling su ES5 prima di eseguire la moka. – superjos

4

Sto usando

npm install mocha-traceur 

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

e sta lavorando come un fascino!

+0

grazie, ci proverò non appena sarò di nuovo così pazzo da tuffarmi nello sviluppo di Thunderbird :) – superjos