Babel 7 - ReferenceError: регенераторRuntime не определен

У меня есть приложение, являющееся базовым компонентом узла и реагирующим интерфейсом.

Я получаю следующую ошибку, когда пытаюсь создать/запустить мое приложение-узел.

Узел: v10.13.0

Ошибка:

dist/index.js: 314 регенераторRuntime.mark (функция _callee (productId) {^

ReferenceError: регенераторRuntime не определен

.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"
  }

Ответы

Ответ 1

Обновить ответ:

Если вы используете Babel 7.4.0 или новее, то @babel/polyfill устарела deprecated. Вместо этого вы захотите использовать следующее:

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

Добавьте их, используя пряжу:

yarn add core-js
yarn add regenerator-runtime

Оригинальный ответ:

Я только что столкнулся с этой проблемой и нашел следующее решение:

В package.json у меня была @babel/polyfill зависимость. Однако в моем index.js (мой основной js файл) я пренебрег размещением следующей строки вверху:

import '@babel/polyfill'

После того, как я его импортировал, все работало нормально.

Мне не нужно было устанавливать babel-runtime, как подсказывают другие ответы.

Ответ 2

Здесь уже есть очень хороший ответ (первоначально размещенный на вопросе Babel6), который я просто переведу на Yarn. В основном вам нужно время выполнения babel (НЕ как зависимость dev) и плагин transform-runtime

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

А в .babelrc добавьте:

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

Ответ 3

Пользователи React.js

Если вы столкнулись с этой проблемой при использовании реакции (особенно при попытке использовать Async/Wait), тогда Валентино Гальярди предоставил подробный подход в его блоге относительно того, как решить эту проблему

Ответ 4

Вам понадобится время регенерации.

Установите эти два пакета - babel-plugin-transform -replator и babel-polyfill

Добавьте следующую конфигурацию Babel через .babelrc

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