使用 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, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "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
(babel 配置文件):
{
"presets": [
[
"@babel/preset-env",
{
"debug": false,
"module": false,
"useBuiltIns": "usage",
"corejs": 3
}
]
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
关于javascript - Babel 可以在生成的代码中包含 regeneratorRuntime 依赖项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64790744/