Je suis nouveau sur Webpack et j'ai rencontré un problème suite à ce tutoriel .
Il semble que le webpack.config.js ne configure pas correctement babel-loader
mais je ne suis pas sûr. Dans la console, je vois l'erreur suivante:
bundle.js:49 Uncaught SyntaxError: Unexpected token import
Ce qui se réfère à l' import sortBy from 'lodash/collection/sortBy';
ligne import sortBy from 'lodash/collection/sortBy';
De mon index.js
. Donc, je suppose que c'est un problème de transbordement babel (ne permettant pas la syntaxe d' import
de ES6?)
Voici le fichier index.js
complet
import sortBy from 'lodash/collection/sortBy'; import {users} from './users'; import {User} from './User'; sortBy(users, 'name') .map(user => { return new User(user.name, user.age); }) .forEach(user => { console.log(user.display); });
Et webpack.config.js
ressemble à ceci:
module.exports = { entry: './src/index.js', output: { path: './public/', filename: 'bundle.js' }, devServer: { contentBase: './public/' }, module: { loaders: [ {test: /\.js$/, exclude: /node_modules/, loader: 'babel'} ] } }
J'ai cherché à travers d'autres questions qui ont l'air de se rapporter au problème ici et ici , ainsi que de google, mais n'ont pas trouvé de solution ou la raison pour laquelle j'ai toujours eu l'erreur. Peut-être que le didacticiel est obsolète. Des conseils sur la façon de résoudre ce problème seraient très appréciés!
METTRE À JOUR
L'erreur spécifique de chargement de babel a été résolue en suivant les étapes décrites dans la réponse postée ci-dessous par Alexandre Thebaldi.
Cependant, une nouvelle erreur s'est produite – Module not found: Error: Cannot resolve module 'lodash/collection/sortBy'
Si vous travaillez à travers ce tutoriel et que vous rencontrez cette erreur, il est probablement causé par un chemin incorrect dans l' index.js
, en particulier le fait que le lodash/collections
semble n'exister plus. J'ai réussi à résoudre cette deuxième erreur en modifiant simplement le chemin vers lodash/sortBy
.
REMARQUE
Assurez-vous de vérifier d'abord que lodash
est installé dans node_modules
et le chemin d'accès est correct manuellement avant de le modifier.
Tout d'abord, assurez-vous d'avoir installé babel core et loader en utilisant:
$ npm install --save-dev babel-loader babel-core
Donc, le chargeur correct est babel-loader
et pas babel
. La configuration doit être:
module: { loaders: [ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" } ] }
En fait, vous devez informer Babel pour transformer votre code.
Pre-6.x, Babel a activé certaines transformations par défaut. Toutefois, Babel 6.x ne s'effectue pas avec des transformations activées. Vous devez indiquer explicitement les transformations à exécuter. La manière la plus simple de le faire est d'utiliser un préréglage, tel que l'ES2015 Preset. Vous pouvez l'installer avec.
$ npm install babel-preset-es2015 --save-dev
Après l'installation prédéfinie, vous devez l'activer.
Créez une configuration
.babelrc
dans votre racine de projet et activez quelques plugins.En supposant que vous avez installé le pré-réglage ES2015, afin de l'activer, vous devez le définir dans votre fichier
.babelrc
, comme ceci:
{ "presets": ["es2015"] }
Détails dans Babel Setup page.
Mikeym
C'est un problème avec le babel-loader et ES6.
Pouvez-vous changer votre webpack.config.js à ceci:
module.exports = { entry: './src/index.js', output: { path: './public/', filename: 'bundle.js' }, devServer: { contentBase: './public/' }, module: { loaders: [ {test: /\.js$/, exclude: /node_modules/, loader: 'babel?presets[]=es2015' } ] } }