Для кода на стороне клиента вы делаете правильные вещи. babelify
его и отправьте клиенту.
Для кода на стороне сервера я бы просто сделал обычную сборку с помощью babel-cli
Согласно http://babeljs.io/docs/setup/#babel_register , babel-register
он не предназначен для использования в производстве - ловушка require рекомендуется в первую очередь для простых случаев.
для Babel 6+
Начиная с Babel 6, по умолчанию никакие преобразования не включаются. Итак, начнем с установки babel-cli
и babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Добавьте преобразование в свой .babelrc
файл - это perst-модуль, который мы скачали выше. Взгляните на полный список предустановок, чтобы узнать, какие из них подходят вам лучше всего.
{
"presets": ["es2015"]
}
Добавьте build
скрипт в свой package.json
. Ниже приведены src
ваши входные файлы и build
преобразованные выходные файлы.
"scripts": {
"build": "babel src -d build"
}
Тогда собери его!
$ npm run build
Затем запустите свой код. На этом этапе вы захотите запустить файлы в своем build
каталоге.
$ npm start
для Babel <= 5 просто используйте хук require.
require("babel/register");
Все последующие файлы, требуемые узлом с расширениями .es6 , .es , .jsx и .js, будут преобразованы Babel. Polyfill также автоматически требуется.
Вы сможете сохранить свои исходные файлы в ES6, но по-прежнему выполнять их, используя node server.js
Судя по вашим комментариям, у вас возникли небольшие проблемы. Обратите особое внимание на выделенную желтым цветом часть выше. Ваш первый файл может быть только ES5, который запускается самим узлом. Все последующие требования будут преобразованы Babel ...
Вот как может выглядеть типичная установка
server.js
require("babel/register");
var app = require("./app.js");
app.js
сожги это!
$ node server.js
require("babel/register");
свой server.js, и когда я запустил,node server.js
я получаю сообщение об ошибке:Unexpected reserved word: import ...
так что, похоже, это не сработало