2015-06-16 15 views
10

ho un semplice server nodo:per sempre gli errori con babel-nodo

//server.js

import express from 'express'; 
import React from 'react'; 
... 

Quando provo ad eseguire questo utilizzando Forever:

forever start -c "babel-node --experimental" server.js , esso errori fuori a causa di uso di import

/Applications/MAMP/htdocs/React/ReactBoilerplates/koba04/app/server.js:1 
(function (exports, require, module, __filename, __dirname) { import express 
                   ^^^^^^ 
SyntaxError: Unexpected reserved word 
    at Module._compile (module.js:439:25) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:902:3 
error: Forever detected script exited with code: 8 

Ho anche provato pm2 e nodemon, ho lo stesso errore anche lì. Per pm2, ho seguito questo numero https://github.com/Unitech/PM2/issues/1167, ma non ha funzionato neanche. Cosa sto facendo di sbagliato qui?

+1

Con PM2 basta fare: '' 'PM2 iniziare app.js --interpreter/node_modules/.bin/babel-node''' – Unitech

risposta

1

suggerisco di precompilare i tuoi es6 script in es5 script ed eseguire l'applicazione con un comando forever start server.js dove server.js è il risultato di precompilazione.

Se stai usando react.js per un app isomorfica anche voi saranno necessarie per precompilare i vostri script per i browser o (via browserify, webpack e così via).

Quindi non vedo alcun profitto per lavorare con gli script es6 tramite la compilazione su richiesta rispetto alla precompilazione con gulp o qualsiasi altro sistema di creazione di js.

+0

Forse cercavi di dire "compilation" invece di "compilcation" in tutto.? –

+0

Il guadagno è ovvio: non è necessario precompilare. – oskarth

7

Questo funziona per transpilation on-the-fly per me: forever start -c node_modules/.bin/babel-node server.js

Un'altra soluzione sta usando il Require Hook in questo modo:

// server-wrapper.js 
require('babel/register'); 

require('./server.js'); 

Poi gestita forever start server-wrapper.js.

6
forever start -c "node -r babel-register" ./src/index.js 

Funziona anche.

Problemi correlati