解决
一般解决问题
- 加上
--display-error-details
参数,能得到更多的错误细节. - 在解析过程中,阅读相关解析相关的配置。
- loaders有它们自己的解析配置 resolveLoader。
npm link
的模块不要查找它们的依赖
Node.js的模块求解算法非常简单:在加载模块的每个父目录的node_modules目录中查找模块依赖。当你使用npm link
来作为依赖时,它们是不会在你的项目根目录中的,因而导致模块无法被找到。(你可能想通过使用npm link
来考虑peerDependencies ,但这打破了在nodejs中的设计。)需要注意的是应用程序(即使这不是完美的设计)的依赖也是一种peerDependency,即使它不是在模块的package.json文件中列出。
但是你能在webpack中轻松的解决:添加项目中的node_modules
目录到解析路径中。有两个配置选项可以设置:resolve.fallback
和 resolveLoader.fallback
。
module.exports = {
resolve: { fallback: path.join(__dirname, "node_modules") },
resolveLoader: { fallback: path.join(__dirname, "node_modules") }
};
监控
当正在监控时,资源的改变不会引起webpack的重新编译
没有足够的监控者
验证,如果你的系统中有足够的观察者,如果该值太低,在webpack的文件观察者将不能识别这些变化
cat /proc/sys/fs/inotify/max_user_watches
Arch用户, 添加fs.inotify.max_user_watches=524288
到 /etc/sysctl.d/99-sysctl.conf
文件中,然后执行sysctl --system
. Ubuntu用户(和其他用户): echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
。
OS-X fsevents问题
在 OS-X 文件夹中会遭到损坏. 可以阅读这篇文章:
OS X FSEvents bug may prevent monitoring of certain folders
Windows路径
webpack 对于很多配置项都需要使用绝对路径。__dirname + "/app/folder"
这种路径是错误的,因为对于windows用户\
才是路径分隔符。
使用正确的分隔符。如,path.resolve(__dirname, "app/folder")
或者path.join(__dirname, "app", "folder")
。
Vim
在一些机器Vim的预配置中,backupcopy被设置为auto。这可能会导致系统的文件监控机制出现潜在的问题。
切换此选项为yes
将确保生成该文件的副本,原来的那份在保存时会被覆盖掉。
:set backupcopy=yes