如何使用 babel 7.5 + runtime + plugin-transform-runtime 修复 regeneratorRuntime 错误异步方法
How to fix regeneratorRuntime error async method with babel 7.5 + runtime + plugin-transform-runtime
我尝试在 js 脚本中使用 async/await (class 方法) 在 webpack 配置中但我遇到了这个错误:
search.js:33 Uncaught ReferenceError: regeneratorRuntime is not defined
我可能在 babelrc 文件中有错误,但我尝试了在网上找到的所有东西:/
堆栈:Visual Studio 代码中的 WSL1 节点 10.16.3 npm 6.11.1。
以前,我的 polyfill 配置也有类似的问题。
我尝试将新的 Babel 推荐与 @babel/plugin-transform-runtime 和 @babel/runtime 一起使用,但问题仍然存在。
我尝试删除 /node_modules/ 目录并锁定包文件以使用 npm i
再次生成它,但没有任何变化。
我对异步函数声明没有问题(在 class 之外)。
生成错误的文件
class Search {
constructor() {...}
async run() {
await this.xxxx();
}
xxxx() {...}
}
.babelrc
{
"presets": [
["@babel/preset-env"],
[
"@babel/env",
{
"modules": false,
"useBuiltIns": "usage",
"corejs": 3
}
]
],
"plugins": [
[ "@babel/plugin-transform-runtime", {"regenerator": true, "corejs": 3} ],
[ "@babel/plugin-transform-async-to-generator" ]
]
}
package.json
{
...
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-transform-async-to-generator": "^7.5.0",
"@babel/plugin-transform-runtime": "^7.6.2",
"@babel/preset-env": "^7.6.3",
"autoprefixer": "^9.6.1",
"babel-loader": "^8.0.6",
"clean-webpack-plugin": "^2.0.2",
"css-loader": "^2.1.1",
"file-loader": "^3.0.1",
"fontmin-webpack": "^2.0.4",
"imagemin-gifsicle": "^6.0.1",
"imagemin-jpegtran": "^6.0.0",
"imagemin-optipng": "^7.0.0",
"imagemin-svgo": "^7.0.0",
"imagemin-webpack": "^5.1.0",
"jquery": "^3.4.1",
"loader": "^2.1.1",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.12.0",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"postcss-cli": "^6.1.2",
"postcss-import": "^12.0.1",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0",
"sass-loader": "^7.3.1",
"style": "0.0.3",
"style-loader": "^0.23.1",
"sugarss": "^2.0.0",
"uglifyjs-webpack-plugin": "^2.2.0",
"webpack": "^4.39.2",
"webpack-cli": "^3.3.7",
"webpack-manifest-plugin": "^2.0.4"
},
"dependencies": {
"@babel/runtime": "^7.6.3",
"core-js": "^3.3.2",
"detect-it": "^3.0.5",
"gifsicle": "^4.0.1",
"slick-carousel": "^1.8.1"
},
"browserslist": [
"last 2 versions"
]
}
我找到了解决方案。
在主js文件中
import "regenerator-runtime/runtime";
添加再生器运行时
npm i regenerator-runtime
谢谢。
我尝试在 js 脚本中使用 async/await (class 方法) 在 webpack 配置中但我遇到了这个错误:
search.js:33 Uncaught ReferenceError: regeneratorRuntime is not defined
我可能在 babelrc 文件中有错误,但我尝试了在网上找到的所有东西:/
堆栈:Visual Studio 代码中的 WSL1 节点 10.16.3 npm 6.11.1。
以前,我的 polyfill 配置也有类似的问题。 我尝试将新的 Babel 推荐与 @babel/plugin-transform-runtime 和 @babel/runtime 一起使用,但问题仍然存在。
我尝试删除 /node_modules/ 目录并锁定包文件以使用 npm i
再次生成它,但没有任何变化。
我对异步函数声明没有问题(在 class 之外)。
生成错误的文件
class Search {
constructor() {...}
async run() {
await this.xxxx();
}
xxxx() {...}
}
.babelrc
{
"presets": [
["@babel/preset-env"],
[
"@babel/env",
{
"modules": false,
"useBuiltIns": "usage",
"corejs": 3
}
]
],
"plugins": [
[ "@babel/plugin-transform-runtime", {"regenerator": true, "corejs": 3} ],
[ "@babel/plugin-transform-async-to-generator" ]
]
}
package.json
{
...
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-transform-async-to-generator": "^7.5.0",
"@babel/plugin-transform-runtime": "^7.6.2",
"@babel/preset-env": "^7.6.3",
"autoprefixer": "^9.6.1",
"babel-loader": "^8.0.6",
"clean-webpack-plugin": "^2.0.2",
"css-loader": "^2.1.1",
"file-loader": "^3.0.1",
"fontmin-webpack": "^2.0.4",
"imagemin-gifsicle": "^6.0.1",
"imagemin-jpegtran": "^6.0.0",
"imagemin-optipng": "^7.0.0",
"imagemin-svgo": "^7.0.0",
"imagemin-webpack": "^5.1.0",
"jquery": "^3.4.1",
"loader": "^2.1.1",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.12.0",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"postcss-cli": "^6.1.2",
"postcss-import": "^12.0.1",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0",
"sass-loader": "^7.3.1",
"style": "0.0.3",
"style-loader": "^0.23.1",
"sugarss": "^2.0.0",
"uglifyjs-webpack-plugin": "^2.2.0",
"webpack": "^4.39.2",
"webpack-cli": "^3.3.7",
"webpack-manifest-plugin": "^2.0.4"
},
"dependencies": {
"@babel/runtime": "^7.6.3",
"core-js": "^3.3.2",
"detect-it": "^3.0.5",
"gifsicle": "^4.0.1",
"slick-carousel": "^1.8.1"
},
"browserslist": [
"last 2 versions"
]
}
我找到了解决方案。
在主js文件中
import "regenerator-runtime/runtime";
添加再生器运行时
npm i regenerator-runtime
谢谢。