我正在使用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 包是否正常?
答案 0 :(得分:3)
如果您在开发过程中依赖这些模块(babel-polyfill和babel-core / register),您还需要在生产文件中使用它们。转换过程不会添加Object.assign
或Promise
等填充。
docs page for the babel polyfills没有明确说明您应该为开发和生产添加不同的库。但确实表示你需要将它或特定的polyfill包含在你想要的功能中,这似乎表明你需要在任何环境中使用它们。
简短回答:在每个环境中都包含polyfills是标准的,因为babel的蒸馏不能单独添加polyfill。