使用react.js、webpack和express服务器时出现错误:无法找到模块“babel-core”。

86

每当我在终端中运行webpack时,都会收到以下信息:

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

ERROR in Cannot find module 'babel-core'

这是我的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"
}
5个回答

156

在运行npm install时,你应该将babel-loader和babel-core安装为dev-dependency。

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

运行得非常顺利!记得将它添加到你的 packag.json 中,以避免再次遇到这个问题。使用 -S 标志运行 npm install 就可以完成任务了。 - andilabs
4
我仍然遇到错误:Error: Cannot find module '@babel/core'。 babel-loader@8需要Babel 7.x(包'@babel/core'),如果你想使用Babel 6.x('babel-core'包), 你应该安装'babel-loader@7'。 - pguardiario
3
看起来 loader v8 需要 core v7,但是目前 core v7 只有一个 beta 版本,这似乎是维护者的疏忽。我手动指定了 babel-loader7.1.5 版本(当前最新版本),现在已经正常运行。 - Brian Underwood

47

对于想要使用babel-loader 8+的人:它需要安装Babel 7.x,而不是'babel-core',应该安装作为'@babel/core'包。换句话说,运行:

对于想要使用babel-loader 8+的人:它需要安装Babel 7.x,而不是'babel-core',应该安装作为'@babel/core'包。换句话说,运行:

npm install --save-dev @babel/core

2
那我猜你没有使用babel-loader 8+。我回答这个问题是为了那些正在升级/启动新项目但由于包重命名而不知道为什么它不起作用的人。既然已经明确说明适用的版本,就不需要投反对票了。 - CounterFlame

13

我遇到了这个错误,通过安装babel-core解决了问题。 但有趣的是,我发现babel-loader的peerDependencies中确实存在babel-core。

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

为什么peerDependecies没有自动安装呢?经过一些搜索,我在npm博客中找到了这篇文章

peerDependencies将不再自动安装。


7

在@Chetan的回答中,我想补充一点:

今天我在阅读Axel Rauschmayer博士的书籍here时遇到了这个问题。据书中所述,babel-loader应该会下载babel-core。但是当我尝试使用它时,并不是这样的。我认为这与@theJian的回答有关。

由于原始的package.json已经将babel-loader列为依赖项,运行以下命令即可解决错误。

npm install babel-core --save-dev

4
npm install babel-register

这可以解决你的问题。此外,添加babelrc文件。 .babelrc { "presets": ["es2015", "react"] }

7
为什么?你能给出一些解释为什么这会奏效吗? - Eric Hepperle - CodeSlayer2010

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接