Использование 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 явно не сказано, что вы должны включать разные библиотеки для разработки и производства. Но это говорит о том, что вам нужно будет включить его или определенные полифилы для нужных вам функций, что, по-видимому, говорит о том, что они вам нужны в любой среде.

Краткий ответ: стандартно включать полифилы в каждую среду, так как при трансплантации с помощью вавилона полифилы сами по себе не добавляются.

Другие вопросы по тегам