如何解决Babel可以在生成的代码中包括regeneratorRuntime依赖性吗?
使用babel定位到Node v4,看来生成的代码取决于输出中未包含的regeneratorRuntime
模块。
据我了解,似乎在执行生成的代码之前,必须在运行时需要“ regenerator-runtime / runtime”模块。 (通过https://babeljs.io/docs/en/usage#polyfill)
生成器脚本:
const babel = require('@babel/core');
const out = babel.transformSync(`
(async () => {
})();
`,{
presets: [
[
"@babel/preset-env",{
"targets": {
"node": "4"
}
}
]
]
});
输出:
"use strict";
function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next,_throw); } }
function _asyncToGenerator(fn) { return function () { var self = this,args = arguments; return new Promise(function (resolve,reject) { var gen = fn.apply(self,args); function _next(value) { asyncGeneratorStep(gen,"next",value); } function _throw(err) { asyncGeneratorStep(gen,"throw",err); } _next(undefined); }); }; }
_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
case "end":
return _context.stop();
}
}
},_callee);
}))();
是否可以指示Babel在生成的代码中包括regeneratorRuntime模块?
解决方法
您可以通过在项目中安装@ babel / plugin-transform-runtime并在babel配置的“插件”部分中引用它来添加功能。
这是工作.babelrc
(baby conf文件)的示例:
{
"presets": [
[
"@babel/preset-env",{
"debug": false,"module": false,"useBuiltIns": "usage","corejs": 3
}
]
],"plugins": [
"@babel/plugin-transform-runtime"
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。