这些是我在 package.json 中的依赖项:
"devDependencies": {
"babel-cli": "^6.24.1",
"babel-polyfill": "^6.23.0",
"babel-preset-env": "^1.6.0",
"babel-preset-stage-0": "^6.5.0",
}
我可以用“babel server -d transpiled”编译得很好(我把所有东西都放在服务器文件夹而不是 src 中)。
当我尝试使用“node transpiled/index.js”运行转译后的代码时出现问题。我明白了
ReferenceError: regeneratorRuntime 未定义
我做了一些搜索,似乎问题是我在使用 await/async 时没有 babel-polyfill,但实际上我有。
这是我的 index.js 文件
require('babel-polyfill');
require('./server');
这也是我的 .babelrc 文件
{
"presets": ["env", "stage-0"]
}
究竟是怎么回事,为什么我会收到此错误?我已经有了 babel-polyfill,所以这不应该发生。
最佳答案
我今天遇到了同样的问题。根据这个issue ,函数声明被提升,它们在转译代码中的导入之前结束。
要解决此问题,您可以更改应用程序的入口点,以便第一个文件可以导入 polyfill,然后导入应用程序的其余部分。像这样:
import 'babel-polyfill';
import './app';
另一种解决方案是将您的异步函数声明转换为变量样式,因此您可以使用此 const myFunction = async () => {} 而不是此
。这样,由于该函数现在是一个变量,它不会在 async myFunction {}
/require("babel-polyfill")
之前被提升。
关于javascript - Babel CLI 引用错误 : regeneratorRuntime is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45576855/