我正在尝试将webpack
和react-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
有没有人看到过这个错误?我做错了什么?
答案 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
它解决了我的问题