2015-10-31 11 views
7

Sto cercando di eseguire Babel tramite la sua CLI utilizzando babel-node ma continuo a ricevere l'errore Unexpected token export. Capisco che Babel 6 è tutto basato sui plugin e che ho bisogno di impostare il plug-in tramite .babelrc ma non sembra funzionare correttamente.Babele 6 CLI: esportazione di token inaspettati?

Così qui sono le mie domande:

Per coloro che sono curiosi di quello che sto cercando di esportare, quindi qui è la classe:

'use strict'; 

class Factorial { 
    static solve (num) { 
    if(num === 0) return 1; 
    else return num * Factorial.solve(num - 1); 
    } 
} 

console.log(Factorial.solve(5)) 

export default Factorial; 
+3

FWIW, non utilizzare una classe se ha solo metodi statici. O utilizzare un oggetto o, in questo caso, semplice avere una singola funzione. –

+0

@FelixKling Grazie per il suggerimento, sono abituato ad usare le classi da quando provengo da uno sfondo C++/C#/Java;) – iwatakeshi

risposta

13

Il modo più semplice per iniziare è utilizzare una preimpostazione .

Prima di tutto installare il nostro dipendenze:

$ npm install --save-dev babel-cli babel-preset-es2015 

Quindi aggiungere uno script build al package.json che corre Babel: (Questo è importante perché userà la versione locale di babel-cli invece di uno installato a livello globale)

"build": "babel input.js" 

tuo package.json dovrebbe assomigliare a questa:

{ 
    "name": "my-module", 
    "devDependencies": { 
    "babel-cli": "^6.x.x", 
    "babel-preset-es2015": "^6.x.x" 
    }, 
    "scripts": { 
    "build": "babel input.js -o compiled.js" 
    } 
} 

Infine si vuole aggiornare il locale .babelrc in questo modo:

{ 
    "presets": ["es2015"] 
} 

quindi si esegue npm run build e il gioco è tutto pronto per andare.

Inoltre, la CLI di Babel 6 ha un'opzione globale .babelrc? Sembra noioso se devo installare i plug-in per ogni progetto che lo richiede ...

Questa è una cattiva idea in quanto significa che non si può mai aggiornarlo senza aggiornare ogni singolo del codice progetti. Avere versioni locali significa che questo potenziale errore è meno probabile che si verifichi.

+0

Grazie! Ho capito che i preset esistono e l'hanno usato ma sembra che la parola chiave "import" non funzioni?Sapresti qualcosa su questo problema? – iwatakeshi

+0

Potrebbe essere un problema con la tua versione di Babel. Ci sono stati alcuni problemi iniziali, prova l'aggiornamento e se ciò non funziona fermati dal canale Slack per il supporto. https://slack.babeljs.io/ –

3

Ho ricevuto lo stesso errore, ma le mie configurazioni webpack/babel sembravano corrette. Per tentativi ed errori, ho sostituito export myFunction con export default myFunction e l'errore è stato risolto.


Successivamente, mi sono reso conto che il modo corretto di esportare è export {myFunction}. L'ho implementato e tutto funziona bene.

Problemi correlati