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