ERREUR dans Impossible de trouver le module 'babel-core'. en utilisant react.js, webpack et serveur express

84

Chaque fois que je cours webpackdans le terminal, j'obtiens:

Hash: efea76b1048c3a97b963
Version: webpack 1.12.13
Time: 33ms
    + 1 hidden modules

ERROR in Cannot find module 'babel-core'

Voici mon fichier webpack.config.js

module.exports = {
  entry: './app-client.js',
  output: {
    filename: 'public/bundle.js'
  },
  module: {
    loaders: [
      {
        exclude: /(node_modules|app-server.js)/,
        loader: 'babel'
      }
    ]
  }
}

package.json

{
  "name": "react",
  "version": "1.0.0",
  "description": "React polling app",
  "main": "app-client.js",
  "dependencies": {
    "babel-loader": "^6.2.2",
    "bootstrap": "^3.3.6",
    "express": "^4.13.4",
    "react": "^0.14.7"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
Richard Bustos
la source

Réponses:

154

Vous devez installer babel-loader et babel-core en tant que dépendance dev pendant l'installation de npm.

npm install babel-core babel-loader --save-dev
Chetan
la source
a fonctionné comme un charme! N'oubliez pas de l'ajouter à votre packag.jsonpour éviter de rencontrer à nouveau ce problème. Courir npm install avec le drapeau -Sfera l'affaire.
andilabs
4
Je reçois toujours:Error: Cannot find module '@babel/core' babel-loader@8 requires Babel 7.x (the package '@babel/core'). If you'd like to use Babel 6.x ('babel-core'), you should install 'babel-loader@7'
pguardiario
3
Il semble que le chargeur v8 ait besoin du noyau v7, mais le noyau v7 n'a actuellement qu'une betaversion, ce qui semble être un oubli des responsables. J'ai spécifié manuellement 7.1.5pour babel-loader(la dernière version qui est sortie en ce moment) et je suis en marche
Brian Underwood
42

Pour ceux qui souhaitent utiliser babel-loader 8+: il nécessite Babel 7.x ,, qui doit être installé en tant que package '@ babel / core' au lieu de 'babel-core'. En d'autres termes, exécutez:

npm install --save-dev @babel/core
CounterFlame
la source
2
Alors je suppose que vous n'utilisez pas babel-loader 8+. J'ai répondu à cela pour les personnes qui mettent à niveau / démarrent un nouveau projet mais ne réalisent pas pourquoi cela ne fonctionne pas à cause du renommage du package. Inutile de voter contre alors qu'il est clairement indiqué à quelle version il s'applique.
CounterFlame
12

Je viens de rencontrer cette erreur et je l'ai résolu en installant babel-core. Mais ce qui est intéressant, c'est que j'ai trouvé que babel-core existe dans les peerDependencies de babel-loader.

https://github.com/babel/babel-loader/blob/master/package.json

Pourquoi peerDependecies ne s'installe pas automatiquement, après quelques recherches, j'ai trouvé cela dans le blog npm.

peerDependencies ne s'installera plus automatiquement.

theJian
la source
6

Ajout à la réponse de @ Chetan sur ce fil:

Je suis tombé sur ce problème aujourd'hui en parcourant le livre du Dr Axel Rauschmayer ici . Par livre, babel-loaderdevrait également être téléchargé babel-core. Cependant, ce n'est pas le cas lorsque je l'ai essayé. Je pense que cela se rapporte à la réponse de @ theJian.

Étant donné que le package.json d'origine est déjà répertorié babel-loadercomme dépendance, l'exécution de la commande suivante a résolu l'erreur.

npm install babel-core --save-dev
Bhanuprakash D
la source
2
npm install babel-register

Cela peut résoudre votre problème. De plus, ajoutez babelrc .babelrc {"presets": ["es2015", "react"]}

patilnitine
la source
6
Pourquoi? Pouvez-vous expliquer pourquoi cela fonctionnerait?
Eric Hepperle - CodeSlayer2010