Вечные ошибки с babel-node

У меня есть простой сервер узла:

//сервер.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, но это тоже не сработало. Что я здесь делаю неправильно?


person a_rahmanshah    schedule 16.06.2015    source источник
comment
С PM2 просто выполните: pm2 start app.js --interpreter ./node_modules/.bin/babel-node   -  person Unitech    schedule 02.05.2017
comment
Похоже, вы забыли определить файл .babelrc с пресетами по умолчанию.   -  person Reborn    schedule 21.11.2018


Ответы (4)


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

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

person basickarl    schedule 18.10.2016

Это работает для транспиляции на лету для меня: 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.

person oskarth    schedule 13.07.2015

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

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

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

person shadeglare    schedule 19.06.2015
comment
Вы хотели сказать компиляцию вместо компиляции повсюду? - person Michael Blankenship; 19.06.2015
comment
Выгода очевидна: вам не нужно предварительно компилировать. - person oskarth; 13.07.2015

В вашем файле package.json под тегом scripts добавьте запись, как показано ниже.

в package.json под тегом scripts

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "forever start -c babel-node src/index.js",
},

все зависимости должны быть включены в тег зависимостей в файле package.json

затем выполните npm install затем запустите сервер, выполнив npm start

person NuOne    schedule 08.03.2019