WebPack系列教程(九):故障排除

解决

一般解决问题

  • 加上--display-error-details 参数,能得到更多的错误细节.
  • 在解析过程中,阅读相关解析相关的配置。
    • loaders有它们自己的解析配置 resolveLoader。

Node.js的模块求解算法非常简单:在加载模块的每个父目录的node_modules目录中查找模块依赖。当你使用npm link来作为依赖时,它们是不会在你的项目根目录中的,因而导致模块无法被找到。(你可能想通过使用npm link来考虑peerDependencies ,但这打破了在nodejs中的设计。)需要注意的是应用程序(即使这不是完美的设计)的依赖也是一种peerDependency,即使它不是在模块的package.json文件中列出。

但是你能在webpack中轻松的解决:添加项目中的node_modules目录到解析路径中。有两个配置选项可以设置:resolve.fallbackresolveLoader.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

你可能感兴趣的:(javascript学习)