web-dev-qa-db-fra.com

Babel 7 - ReferenceError: regeneratorRuntime n'est pas défini

J'ai une application qui est un noeud backend et une interface frontale.

Je reçois le message d'erreur suivant lorsque j'essaie de créer/exécuter mon application de noeud.

Node: v10.13.0

Erreur:

dist/index.js: 314 regeneratorRuntime.mark (fonction _callée (productId) {

ReferenceError: regeneratorRuntime n'est pas défini

.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()], // in order to ignore all modules in node_modules folder
        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"
  }
4
Kay

Il y a déjà une très bonne réponse ici (initialement publiée sur la question Babel6) que je vais simplement traduire en Yarn. En gros, vous avez besoin du runtime babel (PAS comme dépendance de dev) et du plugin transform-runtime

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

Et, dans .babelrc, ajoutez:

{
    "presets": ["@babel/preset-env"],
    "plugins": [
        ["@babel/transform-runtime"]
    ]
}
3
Cyril Duchon-Doris

Vous aurez besoin du regeneratorRuntime .

Installez ces deux paquets - babel-plugin-transform-regenerator et babel-polyfill

Ajoutez la configuration Babel suivante via .babelrc

{
  "plugins": ["transform-regenerator"]
}
0
ksharifbd

Je viens de rencontrer ce problème et suis tombé sur la solution suivante:

Dans package.json, j’avais @babel/polyfill comme dépendance. Cependant, dans mon index.js (mon fichier principal js), j'avais négligé de placer la ligne suivante en haut:

import '@babel/polyfill'

Une fois que je l'ai importé, tout a bien fonctionné.

Je n'ai pas eu besoin d'installer babel-runtime comme le suggèrent d'autres réponses.

0
kojow7