当我尝试将react-router与webpack一起使用时,为什么会出现jsx-loader错误>

时间:2014-09-30 04:49:57

标签: reactjs webpack react-router

我正在尝试将webpackreact-router整合到一个简单的项目中。当我不使用react-router时,一切正常。这是我的代码:

/** @jsx React.DOM */

var React = require('react');

React.renderComponent(
        <h1>Hello World</h1>,
        document.body
      );

以下是我webpack.config.js的重要部分:

module: {
        loaders: [
        { test: /\.css$/, loader: 'style!css'},
        { test: /\.js$/, loader: 'jsx-loader' }
        ]
    }

但是当我将require('react-router')添加到我的js文件时,我收到此错误:

ERROR in (webpack)/~/node-libs-browser/~/buffer/index.js
Module not found: Error: Cannot resolve module 'jsx-loader' in /usr/local/lib/node_modules/webpack/node_modules/node-libs-browser/node_modules/buffer
 @ (webpack)/~/node-libs-browser/~/buffer/index.js 1:0-106

有没有人看到过这个错误?我做错了什么?

4 个答案:

答案 0 :(得分:5)

您是否在全球范围内安装了webpack而非本地安装?加载器像模块一样解析,因此它试图相对于它应用的资源加载jsx-loader。由于您似乎没有安装本地版本(您应该总是有一个版本),因此它找不到它,因此查看/usr/local/lib/node_modules/webpack

有几种方法可以解决这个问题,最简单的方法就是安装本地版本的webpack。或者使用resolveLoader.root之类的内容将node_modules添加为绝对路径:

(resolveLoader: { root: path.join(__dirname, "node_modules") })

(有关详细信息,请参阅module-loaders

答案 1 :(得分:5)

您使用的是webpack-dev-server吗?当我将react-router添加到webpack构建的项目时,我收到了这个确切的消息,但只是在尝试使用全局安装的webpack-dev-server进行构建时。将其添加到package.json并在本地安装为我修复它。

答案 2 :(得分:3)

您实际运行npm install --save-dev jsx-loader吗?

如果没有安装,它将无法找到它......

答案 3 :(得分:0)

sudo npm update

它解决了我的问题