2015-11-02 16 views
6

Sto riscontrando problemi nel trovare il modo corretto di utilizzare babel per consentirmi di utilizzare jsx nei server.React Rappresentazione lato server Token inatteso, JSX e Babel

Node-jsx è stato dichiarato obsoleto per babele. Sembra che sia babel-core/register che si suppone debba essere usato, ma ottengo ancora problemi di token inaspettati.

Ho creato un repo con il problema che ho.

https://github.com/pk1m/Stackoverflow-helpme

Quando eseguo node app o npm run watch-js Continuo a ricevere token imprevisto facendo riferimento al codice di JSX '<'.

Come faccio a fare in modo che babel trasponga JSX, o sono completamente fuori servizio, grazie.

+0

Non è stato installato -loader. Controlla questo progetto per i file di configurazione di esempio. https://github.com/kriasoft/react-starter-kit –

risposta

20

È necessario utilizzare babel/register (npm i babel --save). E esegui sul tuo server:

require('babel/register')({ 
    stage: 0 
}); 

Puoi omettere lo stage 0 se non stai utilizzando le funzioni sperimentali di babele. Inoltre, potresti preferire di mettere queste opzioni in .babelrc.

Si noti che funzionerà solo per i file richiesti DOPO chiamare (quindi non avrebbe alcun effetto sul file in cui lo si include).

È anche possibile avere le preimpostazioni e altre opzioni in un file .babelrc.

Per babel 6x:

npm i babel-core babel-preset-es2015 babel-preset-react --save 

require('babel-core/register')({ 
    presets: ['es2015', 'react'] 
}); 

Nota: ci sono anche inscenano 0-2 preset.

Per la visione di come hai scritto nella tua package.json si potrebbe provare un comando CLI come quella di Facebook stanno suggerendo nella nota here (o l'uso webpack):

babel --presets react es2015 --watch app/ --out-dir build/ 
babele
+0

ok, ci proverò quando torno a casa. JSX è una funzionalità sperimentale di babele? – pk1m

+1

@ pk1m no jsx e altre funzioni di es6 funzioneranno, lo stage 0 è per cose proposte come 'static' in es7 e altre cose sperimentali (static è bello se stai usando React.Component invece di React.createClass) –

+0

ok, Ho usato 'require ('babel/register')' ma dice che è stato deprecato per 'require ('babel-core/register')'. Quindi l'ho usato invece se puoi vedere nel mio git. Ancora genera errori per '<' – pk1m