Je construis un projet React JS. Dans mon projet, j'utilise les fonctions fléchées qui sont la nouvelle syntaxe ES6. Mais cela génère une erreur lorsque je lance le projet. J'utilise Webpack pour compiler mon code.
Ceci est mon fichier webpack.config.js.
ERROR in ./src/index.js Module build failed (from ./node_modules/babel-loader/lib/index.js): Error: Plugin/Preset files are not allowed to export objects, only functions. In C:\Users\Acer\Desktop\way-ui-react\node_modules\babel-preset-es2015\lib\index.js
J'ai un fichier .babelrc directement dans le dossier racine du projet avec le contenu suivant.
addBackDrop = e => { if(this.state.showDatePicker && !ReactDOM.findDOMNode(this).contains(e.target)) { this.showDatePicker(false); } }
Dans un composant React, je déclare une fonction de flèche comme suit.
{ "presets": [ "es2015", "react", "@babel/preset-env", "@babel/preset-react" ] }
La fonction est dans le composant de classe.
Quand je lance "npm run dev", j'obtiens l'erreur suivante.
const HTMLWebPackPlugin = require('html-webpack-plugin'); const path = require('path'); module.exports = { entry: [ 'babel-polyfill', './src/index.js' ], output: { path: path.resolve(__dirname, "build"), filename: "bundle.js" }, module:{ rules:[ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: ['babel-loader'], }, { test: /\.scss$/, exclude: /node_modules/, use: ['style-loader', 'css-loader', 'sass-loader'] } ], }, resolve: { extensions: ['*', '.js', '.jsx'], }, plugins: [ new HTMLWebPackPlugin({ template: path.join(__dirname, '/build/index.html') }) ], devServer:{ port:5200 } };
Quel est le problème avec ma configuration et comment puis-je y remédier?
3 Réponses :
est-ce un composant fonctionnel? si c'est le cas, vous devez ajouter const avant le nom de la fonction
Non, c'est un composant de classe.
Cela résoudra le problème. fichier .babelrc
{ "presets": [ "@babel/preset-env", "@babel/preset-react" ], "plugins": [ "babel-plugin-transform-class-properties" ] }
Salut je pense que le problème est que vous avez manqué de mettre la parenthèse " addBackDrop = (e) => "
addBackDrop = (e) => { if(this.state.showDatePicker && !ReactDOM.findDOMNode(this).contains(e.target)) { this.showDatePicker(false); } }
Dans la plupart des configurations de développement, les parenthèses ne sont pas requises pour les fonctions de flèche à argument unique
Cela aide-t-il votre problème? stackoverflow.com/a/42064325/11866037
Il s'avère que ce n'est pas le problème avec "npm run dev". Cela fonctionne bien. Le problème apparaît lors du rendu du composant qui utilise la fonction de flèche.
@KaungKhantZaw. Je viens de poster une réponse. Bravo pour sauter. Cela a été utile.
Vous êtes le bienvenu