BŁĄD w Nie można znaleźć modułu „babel-core”. przy użyciureak.js, webpacka i serwera ekspresowego

84

Za każdym razem, gdy biegnę webpackw terminalu, otrzymuję:

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

ERROR in Cannot find module 'babel-core'

Oto mój plik 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
źródło

Odpowiedzi:

154

Powinieneś zainstalować program ładujący babel i rdzeń babel jako zależność dev podczas instalacji npm.

npm install babel-core babel-loader --save-dev
Chetan
źródło
działał jak urok! pamiętaj, aby dodać go do swojego, packag.jsonaby uniknąć ponownego napotkania tego problemu. Bieganie npm install z flagą -Szałatwi sprawę.
andilabs
4
Nadal dostaję: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
Wygląda na to, że loader v8 potrzebuje rdzenia v7, ale core v7 ma obecnie tylko betawydanie, które wydaje się być przeoczeniem ze strony opiekunów. Ręcznie określiłem 7.1.5dla babel-loader(najnowsza wersja, która jest teraz dostępna) i zaczynam działać
Brian Underwood,
42

Dla tych, którzy chcą używać Babel-loader 8+: wymaga Babel 7.x ,, który ma być zainstalowany jako pakiet '@ babel / core' zamiast 'babel-core'. Innymi słowy, uruchom:

npm install --save-dev @babel/core
CounterFlame
źródło
2
Więc myślę, że nie używasz Babel-loader 8+. Odpowiedziałem na to dla ludzi, którzy aktualizują / rozpoczynają nowy projekt, ale nie zdają sobie sprawy, dlaczego to nie działa z powodu zmiany nazwy pakietu. Nie ma potrzeby, aby głosować negatywnie, ponieważ jest jasno określone, do której wersji ma zastosowanie.
CounterFlame
12

Po prostu napotykam ten błąd i rozwiązałem go, instalując babel-core. Ale interesujące jest to, że odkryłem, że rdzeń babel istnieje w zależnościach równorzędnych babel-loadera.

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

Dlaczego peerDependecies nie instalują się automatycznie, po kilku poszukiwaniach znalazłem to na blogu npm.

peerDependencies nie będą już automatycznie instalowane.

theJian
źródło
6

Dodawanie do odpowiedzi @ Chetan w tym wątku:

Natknąłem się na ten problem dzisiaj, czytając książkę dr Axela Rauschmayera tutaj . Na książkę babel-loadernależy również pobrać babel-core. Jednak tak nie jest, gdy go wypróbowałem. Myślę, że odnosi się to do odpowiedzi @ theJian.

Ponieważ oryginalny plik package.json jest już wymieniony babel-loaderjako zależność, uruchomienie następującego polecenia rozwiązało błąd.

npm install babel-core --save-dev
Bhanuprakash D
źródło
2
npm install babel-register

To może rozwiązać twój problem. Dodatkowo dodaj babelrc .babelrc {"ustawienia": ["es2015", "reaguj"]}

patilnitin
źródło
6
Czemu? Czy możesz wyjaśnić, dlaczego to zadziała?
Eric Hepperle - CodeSlayer2010,