LỖI trong Không thể tìm thấy mô-đun 'babel-core'. sử dụng react.js, webpack và express server


84

Bất cứ khi nào tôi chạy webpacktrong nhà ga, tôi nhận được:

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

ERROR in Cannot find module 'babel-core'

Đây là tệp webpack.config.js của tôi

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"
}

Câu trả lời:


154

Bạn nên cài đặt babel-loader và babel-core dưới dạng phụ thuộc dev trong khi cài đặt npm.

npm install babel-core babel-loader --save-dev

làm việc như người ở! rember để thêm nó vào của bạn packag.jsonđể tránh gặp phải vấn đề này một lần nữa. Chạy npm install với -Scuộn cờ thực hiện công việc.
andilabs

4
Tôi vẫn nhận được: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
Có vẻ như trình nạp v8 cần lõi v7, nhưng lõi v7 hiện mới có betabản phát hành, có vẻ như là một sự giám sát từ các nhà bảo trì. Tôi tự xác định 7.1.5cho babel-loader(phiên bản mới nhất đó là ra ngay bây giờ) và tôi là tắt và chạy
Brian Underwood

42

Đối với những người muốn sử dụng babel-loader 8+: nó yêu cầu Babel 7.x ,, được cài đặt dưới dạng gói '@ babel / core' thay vì 'babel-core'. Nói cách khác, hãy chạy:

npm install --save-dev @babel/core

2
Sau đó, tôi đoán bạn không sử dụng babel-loader 8+. Tôi đã trả lời điều này cho những người tình cờ đang nâng cấp / bắt đầu một dự án mới nhưng không nhận ra tại sao nó không hoạt động do đổi tên gói. Không cần phải phản đối trong khi nó đã nêu rõ nó áp dụng cho phiên bản nào.
CounterFlame

12

Tôi chỉ gặp lỗi này và được giải quyết bằng cách cài đặt babel-core. Nhưng điều thú vị là tôi thấy babel-core không tồn tại trong peerDependencies của babel-loader.

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

Tại sao peerDependecies không tự động cài đặt, sau một vài thao tác tìm kiếm, tôi đã tìm thấy điều này trong blog npm.

peerDependencies sẽ không tự động cài đặt nữa.


6

Thêm vào câu trả lời của @ Chetan trên chủ đề này:

Tôi gặp vấn đề này hôm nay khi theo dõi cuốn sách của Tiến sĩ Axel Rauschmayer tại đây . Mỗi cuốn sách, babel-loadercũng nên tải xuống babel-core. Tuy nhiên đây không phải là trường hợp khi tôi dùng thử. Tôi nghĩ điều này liên quan đến câu trả lời của @ theJian.

Vì package.json ban đầu đã được liệt kê babel-loaderlà phụ thuộc, nên chạy lệnh sau đã giải quyết được lỗi.

npm install babel-core --save-dev

2
npm install babel-register

Điều này có thể giải quyết vấn đề của bạn. Ngoài ra, hãy thêm babelrc .babelrc {"presets": ["es2015", "react"]}


6
Tại sao? Bạn có thể đưa ra một số lời giải thích tại sao điều này sẽ hoạt động?
Eric Hepperle - CodeSlayer2010
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.