在生产条目文件中使用babel-polyfill

时间:2017-03-08 21:37:12

标签: node.js ecmascript-2017 babel-polyfill babel-cli babel-core

我正在使用babel来转换ES7 js代码,一切都像dev / staging中的魅力。在应用程序内部,我非常依赖ES7的 async / await 功能。我的输入文件如下所示:

'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 个答案:

答案 0 :(得分:3)

如果您在开发过程中依赖这些模块(babel-polyfill和babel-core / register),您还需要在生产文件中使用它们。转换过程不会添加Object.assignPromise等填充。

docs page for the babel polyfills没有明确说明您应该为开发和生产添加不同的库。但确实表示你需要将它或特定的polyfill包含在你想要的功能中,这似乎表明你需要在任何环境中使用它们。

简短回答:在每个环境中都包含polyfills是标准的,因为babel的蒸馏不能单独添加polyfill。