Babel CLI参考错误:regeneratorRuntime未定义

4

这是我的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"编译,没有任何问题(我将所有内容放在一个名为server的文件夹中而不是src中)。

当我试图使用"node transpiled/index.js"运行转换后的代码时,出现了问题。

ReferenceError: regeneratorRuntime is not defined

我进行了一些搜索,似乎问题是我在使用await/async时没有babel-polyfill,但实际上我有它。

这是我的index.js 文件:

require('babel-polyfill');
require('./server');

这是我的 .babelrc 文件

{
  "presets": ["env", "stage-0"]
}

出了什么问题,为什么会出现这个错误?我已经安装了babel-polyfill,所以不应该发生这种情况。


我建议安装 babel-plugin-transform-regenerator npm 包,并且在代码中加入 let regeneratorRuntime = require("regenerator-runtime"); - amit wadhwani
我尝试安装它,需要它,甚至将其作为插件添加到.babelrc中,但都没有成功。 - anonpd762
可能是Babel 6 regeneratorRuntime is not defined的重复问题。 - Edmundo Santos
不是重复的线程。那个帖子说babel-polyfill是解决方案,但它已经包含在我的依赖项中了。 - anonpd762
你有找到解决方案吗?我也遇到了完全相同的问题。 - Chayemor
2个回答

2
我今天遇到了同样的问题。根据这个问题,函数声明被提升,并且在转换后的代码中出现在导入之前。
为解决此问题,您可以更改应用程序的入口点,以便第一个文件可以导入polyfill,然后导入其余部分的应用程序。像这样:
```javascript import 'babel-polyfill'; import App from './App'; ``` 请注意,这里保留了HTML标签。
import 'babel-polyfill';
import './app';

另一种解决方案是将异步函数声明转换为变量样式,因此,不再使用async myFunction {},而是使用const myFunction = async () => {}。这样,由于该函数现在是一个变量,它不会在require("babel-polyfill")之前被提升。

1
隐藏你的函数,隐藏你的妻子,因为男孩们一直在举起你们的声明。 - Arthur Rizzo
我不认为这是正确的,看看用户的导入,他们在导入应用程序之前使用babel-polyfill进行了要求(通过./server)。 - Chayemor

0

我曾经遇到过完全相同的问题,一直为此苦恼,最终我的设置包括以下内容:

.babelrc

{ "presets": [ "env", "stage-2", "react" ] }

为了避免提升,这是我的app.js

require('babel-register');
require('babel-polyfill');
require('./server');

服务器是我的Express代码实际驻留的地方。

最关键的部分,也是让我的设置在没有那个可恶的错误的情况下工作的原因,在我的webpack中,对于入口点,我必须首先添加babel-polyfill

const webpackConfig = {
    mode: 'development',
    entry: {
        app: ['babel-polyfill', APP_ENTRY_FILE]
    },
....

希望它能对你有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接