Навсегда ошибки с babel- node

У меня есть простой сервер node:

//server.js

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

Когда я пытаюсь запустить это с помощью Forever:

forever start -c "babel-node --experimental" server.js , он устраняет ошибки из-за использования 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

Я также пробовал pm2 и nodemon, я тоже получаю такую ​​же ошибку. Для pm2 я следил за этой проблемой https://github.com/Unitech/PM2/issues/1167, но это тоже не сработало. Что я здесь делаю неправильно?

Ответ 1

Это работает для меня на время трансляции: forever start -c node_modules/.bin/babel-node server.js

Другое решение использует Require Hook следующим образом:

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

require('./server.js');

Затем запустите forever start server-wrapper.js.

Ответ 2

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

Также работает.

Ответ 3

Я предлагаю прекомпилировать ваши сценарии es6 в сценарии es5 и запустить приложение с помощью команды forever start server.js, где server.js является результатом предварительной компиляции.

Если вы используете response.js для изоморфного приложения, вам также понадобится предварительно скопировать ваши сценарии для браузеров (через browserify, webpack и т.д.).

Таким образом, я не вижу никакой пользы для работы с скриптами es6 по запросу по компиляции по сравнению с предварительной компиляцией с помощью gulp или любой другой системы построения js.