在生产入口文件中使用 babel-polyfill
Using babel-polyfill in production entry file
我正在使用 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包是否正常?
如果您在开发过程中依赖这些模块(babel-polyfill 和 babel-core/register),您在生产文件中也需要它们。转译过程不会添加像 Object.assign
或 Promise
.
这样的 polyfill
docs page for the babel polyfills 没有明确说明您应该为开发和生产包含不同的库。但它 does 说你需要包含它或特定的 polyfills 来实现你想要的功能,这似乎是说你在 any 环境中需要它们。
简答:在每个环境中包含 polyfill 是标准的,因为 babel 的转译本身不会添加 polyfill。
我正在使用 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包是否正常?
如果您在开发过程中依赖这些模块(babel-polyfill 和 babel-core/register),您在生产文件中也需要它们。转译过程不会添加像 Object.assign
或 Promise
.
docs page for the babel polyfills 没有明确说明您应该为开发和生产包含不同的库。但它 does 说你需要包含它或特定的 polyfills 来实现你想要的功能,这似乎是说你在 any 环境中需要它们。
简答:在每个环境中包含 polyfill 是标准的,因为 babel 的转译本身不会添加 polyfill。