Использование babel-polyfill в файле ввода продукции
Я использую babel для переноса кода ES7 js, и все работает как чудо в dev/staging. Внутри приложения я в значительной степени полагаюсь на функции асинхронного / ожидающего ES7. Мой входной файл выглядит так:
'use strict';
require("babel-polyfill");
require("babel-core/register");
module.exports = require('./app/server').default();
Я не уверен, нужно ли сохранять модули babel-polyfill и babel-core/register для производственной среды, поскольку перед развертыванием я перемещаю все, используя babel-cli. Я предполагаю, что он должен работать правильно, даже если я удалю их и заставлю файл ввода выглядеть примерно так:
import server from './app/server';
server();
Однако, если сделать это, я получил следующее исключение при запуске приложения:
ReferenceError: regeneratorRuntime is not defined
at C:\Users\Username\Documents\some-service\lib\app\repositories\someRepository.js:18:32
at Object.<anonymous> (C:\Users\Username\Documents\some-service\lib\app\repositories\someRepository.js:40:2)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (C:\Users\Username\Documents\some-service\lib\app\controllers\someController.js:15:27)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (C:\Users\Username\Documents\some-service\lib\app\server.js:15:26)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
Нормально ли ссылаться на пакеты babel-polyfill и babel-core/register в производственной среде?
1 ответ
Если вы используете эти модули (babel-polyfill и babel-core/register) во время разработки, они также понадобятся вам в вашем рабочем файле. Процесс транспиляции не добавляет полифиллы, такие как Object.assign
или же Promise
,
На странице документации для многозаполнений babel явно не сказано, что вы должны включать разные библиотеки для разработки и производства. Но это говорит о том, что вам нужно будет включить его или определенные полифилы для нужных вам функций, что, по-видимому, говорит о том, что они вам нужны в любой среде.
Краткий ответ: стандартно включать полифилы в каждую среду, так как при трансплантации с помощью вавилона полифилы сами по себе не добавляются.