webpack.config.js
module.exports = {
context: __dirname + "/app",
entry: {
javascript: "./app.js",
html: "./index.html",
},
resolve: {
extensions: ['', '.js', '.jsx']
},
output: {
filename: "app.js",
path: __dirname + "/dist",
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader",
},
{
test: /\.html$/,
loader: "file?name=[name].[ext]",
},
],
},
}
package.json
{
"name": "react-webpack-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel": "^6.0.15",
"babel-core": "^6.0.20",
"babel-loader": "^6.0.1",
"file-loader": "^0.8.4",
"webpack": "^1.12.2"
},
"dependencies": {
"react": "^0.14.2"
}
}
app/app.js
import React from "react";
import Greeting from "./greeting";
React.render(
<Greeting name="World"/>,
document.body
);
J'ai vu exactement les mêmes questions après avoir cherché partout, mais aucune des réponses ne semblait s'appliquer à moi. Je reçois le message d'erreur suivant lors de l'exécution de webpack
:
ERREUR dans ./app.js
La construction du module a échoué: SyntaxError: chemin/vers/projet/react-webpack-projet/app/app.js: Jeton inattendu (5: 2)
React.render(
<Greeting name="World"/>,
document.body
);
Je ne sais pas pourquoi je reçois encore cette erreur. Je suppose que cela a quelque chose à voir avec mon fichier webpack.config.js, mais pas à 100% quel est le problème.
Tout d'abord: si vous utilisez React v ^ 0.14, vous devez restituer votre code avec React-Dom. https://www.npmjs.com/package/react-dom
Deuxièmement, cela devrait résoudre votre problème: babel-loader jsx SyntaxError: Jeton inattendu
Vous devez ajouter des préréglages à votre babel-loader:
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: "babel-loader",
presets: ['es2015', 'react']
},
J'utilise actuellement React 0.14.3. La solution ReactDOM ne fonctionnait pas, pas plus que l'ajout des préréglages babel dans le fichier webpack.config.js. Fondamentalement, ces solutions ne semblent fonctionner que si vous avez défini un seul chargeur, mais j'avais à la fois le chargeur babel et le chargeur réactif.
Le travail de DID a consisté à installer le module des préréglages babel react:
npm install babel-preset-react
puis créez un fichier .babelrc dans le répertoire de mon projet avec les éléments suivants:
{
"presets": ['react']
}
Ceci est documenté à http://babeljs.io/docs/plugins/preset-react/ , comme indiqué par Abhinav Singi
Pour moi, la réponse était d'inclure les préréglages dans le bloc de requête:
query: {
presets: ['react', 'es2015']
}
c'est m'aider à résoudre ce problème.
créer un nouveau fichier .babelrc
dans le même répertoire webpack.config.js. Ajoutez ceci à .babelrc
{
"stage": 2,
"env": {
"development": {
"plugins": [
"react-display-name",
"react-transform"
],
"extra": {
"react-transform": {
"transforms": [{
"transform": "react-transform-hmr",
"imports": ["react"],
"locals": ["module"]
}]
}
}
}
}
}