2015-08-18 12 views
5

C'è una variabile globale __DEVTOOLS__ nel mio codice sorgente. E normalmente uso il webpack DefinePlugin per definirlo come valore booleano.Esiste un approccio per iniettare o ignorare le variabili globali durante la compilazione di babele?

new webpack.DefinePlugin({ 
    __DEVTOOLS__: true 
}) 

Ma nel mio test moka Ho solo desidera utilizzare babel/register e non vogliono usare wepack nel mio test. Esiste un approccio per iniettare variabili globali proprio come il webpack DefinePlugin o almeno ignorare le variabili globali durante la compilazione?

risposta

5

con la moka è possibile assegnare proprietà all'oggetto global, che credo sarà ottenere quello che vuoi:

global.__DEVTOOLS__ = true; 

Si può mettere questo dove si vuole, ad esempio, un blocco before, ma se hai già un file helper.js o setup.js che carichi prima dei test, sarebbe un buon posto per metterlo.

+0

ma quando si utilizza 'moka --compilers js: Babel/register --recursive', a quanto pare farà compilare prima, quindi mi fallito prima corsa test. –

+0

Il tuo commento non è chiaro. Se hai bisogno di una variabile globale denominata '__DEVTOOLS__' nei tuoi test, l'impostazione di' global .__ DEVTOOLS__' lo realizzerà fintanto che viene eseguito prima dell'esecuzione dei test, indipendentemente dal fatto che avvenga prima o dopo la compilazione. –

+1

Ho ottenuto l'errore ReferenceError: __DEVTOOLS__ non è definito prima di eseguire qualsiasi codice di test. la compilazione di babele è precedente a quella di mocha, quindi dovrei trovare un posto per iniettare 'global .__ DEVTOOLS__ = true;' prima di compilare babel. –

4

Recentemente mi sono imbattuto in questo problema e l'aggiunta di global.__DEVTOOLS__ = true; a un blocco before o in qualsiasi punto di un test, non ha funzionato per me. Alla fine ho risolto questo problema creando uno script separato che è passato a mocha cli tramite il flag --require.

// config/mocha-setup.js 

require('babel-register'); 

global.__DEVTOOLS__ = true; 

Quindi configurare il comando test:

// package.json 

scripts: { 
    test: mocha --require ./config/mocha-setup 
} 
+0

Questo ha risolto il mio problema di avere una variabile globale nel mio codice non test! – Alexandra

+0

Grazie a questo ho risolto il mio problema con le importazioni! :) – acesmndr

Problemi correlati