我的代码的入口点从以下导入开始:
import 'source-map-support/register';
import 'babel-polyfill';
console.log('polyfill included?', global._babelPolyfill);
[...]
但是,运行时我看到的global._babelPolyfill
是undefined
. 我还注意到,在我的转译代码中,没有require('babel-polyfill')
.
这是为什么?
我的猜测是 babel 认为这babel-polyfill
不是必需的。但是,当我不包含它时,会出现以下错误:
ReferenceError: regeneratorRuntime is not defined
at /opt/node-modules/my-module/node_modules/dependency/promise.js:9:57
at Object.<anonymous> (/opt/node-modules/my-module/node_modules/dependency/promise.js:35:2)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/opt/node-modules/fio/src/file.js:1:1)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
[...]
所以我绝对需要它。我的猜测是,不知何故,依赖项(我稍后在我的代码中导入的另一个节点模块)配置不正确,并且当 babel 转换我的代码时它没有检测到它,所以它仍然认为 babel-polyfill 不是必需的。
我希望有实际的文档来备份,如果确实如此,为什么会这样。
更新为什么这与另一个问题不同:接受的解决方案是使用 babel-polyfill,但我已经在这样做了。我的问题是为什么 babel-polyfill 没有在我的转译代码中导入,因此在我的运行代码中不可用。