在容器中wepack和nodemon热加载失效的问题

gloria0 2019-06-20

前言

这几天打算给自己写的generator加上docker,但是却出现了个奇怪的问题,就是我在本地中webpackndoemon的热加载是能正常使用的,但是在docker容器中这两者却不法使用,而且本地代码更新后是正常同步过去的。

解决方法

在热心网友n͛i͛g͛h͛t͛i͛r͛e͛(segmentfault提问)的帮助下,终于找到了问题的解决方法。其实在stackoverflowgithub issues上已经讨论过这个问题并已经有解决方法了,no automatic restart when using boot2docker docker volumeDocker support

webpack解决方法

webpack.conf.js中写入

watchOptions: {
    aggregateTimeout: 300,
    poll: 1000
}

告诉webpack采用poll的方式监听代码,每1000毫秒检测一次代码有没有发生变化

nodemon解决方法

CLI启动时候加上参数--legacy-watch-L(简写),即nodemon -L xxx.js-L表示的是采用poll的方式监听代码变化。

原因

造成这样的原因是本地和container使用的是两种不同的文件系统,所以当本地代码发生变化后,不会去触发vboxsfinotify,所以使得webpacknodemon的监听失效,而采用poll轮训的方式就解决的这个问题。

相关推荐