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