Babel 7 - ReferenceError: regeneratorRuntime is not defined

13 浏览
0 Comments

Babel 7 - ReferenceError: regeneratorRuntime is not defined

我有一个应用程序,它是一个使用Node作为后端和React作为前端的应用程序。

当我尝试构建/运行我的Node应用程序时,我遇到以下错误。

Node版本:v10.13.0

错误:

dist/index.js:314

regeneratorRuntime.mark(function _callee(productId) {

^

ReferenceError: regeneratorRuntime未定义

.babelrc

{

"presets": [ [

"@babel/preset-env", {

"targets": {

"node": "current"

},

}

], "@babel/preset-react"],

"plugins": [

"@babel/plugin-proposal-class-properties"

]

}

webpack.config.js

{
        mode: "development",
        entry: "./src/index.js",
        target: "node",
        externals: [nodeExternals()], // 为了忽略node_modules文件夹中的所有模块
        stats: {
            colors: true
        },
        devtool: "source-map",
        output: {
            path: path.resolve(__dirname, "dist"),
            filename: "index.js",
            sourceMapFilename: "index.js.map"
        },
        module: {
            rules: [
                {
                    enforce: "pre",
                    test: /\.js$/,
                    exclude: /node_modules/,
                    loader: "eslint-loader",
                },
                {
                    test: /\.m?js$/,
                    exclude: /(node_modules|bower_components)/,
                    use: {
                        loader: "babel-loader",
                        options: {
                            presets: ["@babel/preset-env"]
                        }
                    }
                }
            ],
        },
        node: {
            __dirname: false,
            __filename: false,
        },
        "plugins": [
            new CleanWebpackPlugin(),
            new WebpackShellPlugin({
                onBuildStart: [],
                onBuildEnd: ["nodemon dist/index.js"]
            }),
        ]
    },

package.json

"dependencies": {

"connect": "^3.6.6",

"cors": "^2.8.5",

"dotenv": "^6.1.0",

"express": "^4.16.4",

"hellojs": "^1.17.1",

"i18n-iso-countries": "^3.7.8",

"morgan": "^1.9.1",

"react": "^16.6.3",

"react-dom": "^16.6.3",

"request": "^2.88.0",

"request-promise-native": "^1.0.5",

"serve-static": "^1.13.2",

"vhost": "^3.0.2"

},

"devDependencies": {

"@babel/cli": "^7.1.5",

"@babel/core": "^7.1.6",

"@babel/plugin-proposal-class-properties": "^7.1.0",

"@babel/preset-env": "^7.1.6",

"@babel/preset-react": "^7.0.0",

"babel-eslint": "^10.0.1",

"babel-loader": "^8.0.4",

"clean-webpack-plugin": "^1.0.0",

"copy-webpack-plugin": "^4.6.0",

"css-loader": "^1.0.1",

"eslint": "^5.9.0",

"eslint-config-google": "^0.10.0",

"eslint-loader": "^2.1.1",

"eslint-plugin-react": "^7.11.1",

"extract-loader": "^3.0.0",

"file-loader": "^2.0.0",

"node-sass": "^4.10.0",

"sass-loader": "^7.1.0",

"style-loader": "^0.23.1",

"webpack": "^4.26.0",

"webpack-cli": "^3.1.2",

"webpack-node-externals": "^1.7.2",

"webpack-shell-plugin": "^0.5.0"

}

0
0 Comments

(Babel 7 - ReferenceError: regeneratorRuntime is not defined)问题的出现原因是缺少babel runtime和transform-runtime插件。解决方法是使用以下命令安装这两个依赖包,并在.babelrc文件中添加相应的配置。

yarn add @babel/runtime 
yarn add -D @babel/plugin-transform-runtime

在.babelrc中添加以下配置:

{

"presets": ["@babel/preset-env"],

"plugins": ["@babel/plugin-transform-runtime"]

}

这个提示实际上帮助了我,我之前尝试使用的是开发依赖,但并没有起作用。请问为什么现在起作用了呢?

需要安装/runtime作为代码运行的依赖,而/plugin-transform-runtime在babel编译代码时才需要。

综合结果来看,你的方法和被接受的答案之间有什么区别吗?

0
0 Comments

Babel 7 - ReferenceError: regeneratorRuntime is not defined 是一个在使用 Babel 7 版本时可能遇到的问题。下面是这个问题出现的原因和解决方法。

如果你正在使用 Babel 7.4.0 或更高版本,那么 /polyfill 已经被废弃了。相反,你应该在你的主要 js 文件(通常是 index.js 或类似的文件)的顶部使用以下代码:

import "core-js/stable";
import "regenerator-runtime/runtime";

通过 npm 安装这些包:

npm install --save core-js
npm install --save regenerator-runtime

或者通过 yarn 安装:

yarn add core-js
yarn add regenerator-runtime

在 package.json 文件中,我将 /polyfill 作为依赖项。然而,在我的 index.js(我的主要 js 文件)中,我忽略了在顶部添加以下代码的步骤:

import '/polyfill'

一旦我导入了它,一切就正常了。我不需要像其他答案中建议的那样安装 babel-runtime。

一个可行的配置是一个不断变化的目标,其中有很多复杂的部分。每次更新依赖项时,“Babel”这个名字似乎更加贴切。

以上就是关于 Babel 7 - ReferenceError: regeneratorRuntime is not defined 这个问题的原因和解决方法。希望对你有帮助!

0
0 Comments

在Babel 7.4.0及更高版本中,出现了一个名为"ReferenceError: regeneratorRuntime is not defined"的问题。这个问题的原因是regeneratorRuntime未定义,解决方法是根据具体的使用场景选择不同的配置。

对于应用程序(Option 1: App)的配置,可以使用/preset-env预设来解决这个问题。在配置文件中添加以下代码:

"presets": [

[

"/preset-env",

{

"useBuiltIns": "usage",

"corejs": 3,

"targets": "> 0.25%, not dead"

}

]

]

然后安装相关依赖:

npm i --save-dev /preset-env
npm i regenerator-runtime core-js

对于库(Option 2: Library)的配置,可以使用/plugin-transform-runtime插件来解决这个问题。在配置文件中添加以下代码:

"plugins": [

[

"/plugin-transform-runtime",

{

"regenerator": true,

"corejs": 3

}

]

]

然后安装相关依赖:

npm i --save-dev /plugin-transform-runtime
npm i /runtime

以上是解决"ReferenceError: regeneratorRuntime is not defined"问题的方法,具体的选择取决于应用场景。同时需要注意,/polyfill在Babel 7.4.0版本开始被弃用,如果无法切换到core-js,可以将corejs选项设置为2,并安装/runtime-corejs2依赖。另外,也可以使用/preset-env来进行语法转换,将useBuiltIns选项设置为false,这样可以在库选项中使用局部polyfills,并且可以转换node_modules。最后,还有一些相关的扩展和注意事项,可以参考官方文档了解更多信息。

总结起来,我们可以根据具体的使用场景选择不同的配置来解决"ReferenceError: regeneratorRuntime is not defined"问题。

0