在生产入口文件中使用babel-polyfill

我使用babel来转储ES7 js代码,并且所有的东西都像dev / staging中的魅力一样。 在应用程序内部,我非常依赖ES7的asynchronous/等待function。 我的入口文件如下所示:

'use strict'; require("babel-polyfill"); require("babel-core/register"); module.exports = require('./app/server').default(); 

我不确定在生产环境中是否有必要保留babel-polyfillbabel-core / register模块,因为我在部署之前使用babel-cli来传输所有内容。 我认为它必须正确工作,即使我删除这些,使入口文件看起来像这样:

 import server from './app/server'; server(); 

但是,如果这样做,我在启动应用程序时遇到了下一个exception:

 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-polyfillbabel-core / register包是否正常?

如果您在开发过程中依赖于这些模块(babel-polyfill和babel-core / register),那么您的生产文件中也需要这些模块。 转译过程不会添加像Object.assignPromise这样的polyfill。

babel polyfills的文档页面没有明确说明你应该为开发和生产包含不同的库。 但它确实表示你需要包含它或特定的polyfills你想要的function,似乎说你需要在任何环境中使用它们。

简而言之:在每个环境中都包括polyfill是标准的,因为babel的转移不会自动添加polyfill。