ERROR in Não é possível encontrar o módulo 'babel-core'. usando react.js, webpack e servidor expresso

84

Sempre que executo webpackno terminal, recebo:

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

ERROR in Cannot find module 'babel-core'

Aqui está meu arquivo 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
fonte

Respostas:

155

Você deve instalar o babel-loader e o babel-core como dev-dependency durante a instalação do npm.

npm install babel-core babel-loader --save-dev
Chetan
fonte
funcionou como um encanto! lembre-se de adicioná-lo ao seu packag.jsonpara evitar esse problema novamente. Correr npm install com a bandeira -Sfará o trabalho.
andilabs
4
Ainda estou conseguindo: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
Parece que o loader v8 precisa do core v7, mas o core v7 atualmente tem apenas um betalançamento, o que parece um descuido dos mantenedores. Especifiquei manualmente 7.1.5para babel-loader(a versão mais recente que está disponível agora) e estou pronto e funcionando
Brian Underwood
43

Para aqueles que desejam usar o babel-loader 8+: ele requer Babel 7.x ,, que deve ser instalado como o pacote '@ babel / core' ao invés de 'babel-core'. Em outras palavras, execute:

npm install --save-dev @babel/core
CounterFlame
fonte
2
Então eu acho que você não está usando o babel-loader 8+. Eu respondi isso para pessoas que estão atualizando / iniciando um novo projeto, mas não percebem por que não está funcionando por causa da renomeação de pacote. Não há necessidade de downvote enquanto estiver claramente declarado a qual versão se aplica.
CounterFlame
12

Acabei de encontrar esse erro e resolvi instalando o babel-core. Mas o interessante é que descobri que o babel-core existe nas dependências de pares do babel-loader.

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

Por que o peerDependecies não é instalado automaticamente, depois de alguns trabalhos de pesquisa, encontrei isso no blog do npm.

peerDependencies não será mais instalado automaticamente.

theJian
fonte
6

Adicionando à resposta de @ Chetan neste tópico:

Corri para este problema hoje enquanto acompanhava o livro do Dr. Axel Rauschmayer aqui . Por livro, babel-loaderdeve ser baixado babel-coretambém. No entanto, este não foi o caso quando o experimentei. Acho que isso está relacionado à resposta de @ theJian.

Como o package.json original já está listado babel-loadercomo dependência, executar o comando a seguir resolveu o erro.

npm install babel-core --save-dev
Bhanuprakash D
fonte
3
npm install babel-register

Isso pode resolver seu problema. Além disso, adicione babelrc .babelrc {"presets": ["es2015", "react"]}

patilnitina
fonte
6
Por quê? Você pode explicar por que isso funcionaria?
Eric Hepperle - CodeSlayer2010