【pm2】watch不起作用的解决办法
用pm2
做express.js
应用的自动化部署工具,开发过程中发现用watch
参数监控工程目录下文件内容变化时自动进行热加载的过程出现问题。
其只能监控到html
文件的变化,对于js
文件则监控不到。
详述如下
工程的目录结构类似如下:
project |-- app.js |-- ecosystem.json |-- bin |-- www |-- other_folder
bin/www
为工程的启动入口。ecosystem.json
为pm2
的配置文件,位于工程的根目录下。ecosystem.json
内容为:
{ "apps": [ { "name": "myapp", "script": "./bin/www", //是相对于ecosystem.json文件的相对目录 "watch": true, .... } ] }
watch
默认值为true
,即上述配置可不设置watch
选项,同样也能监控内容变化,监控的为ecosystem.json
所在的当前目录的下的所有内容。
此外,watch
值还可为false
(关闭watch)、表示某个路径的字符串
或表示多个目录的字符串数组
。
但是,根据上面的配置,却发现不能监控到js
文件的变化。例如,app.js
文件的变化就监控不到。
究其原因,是由于服务器的文件系统引起的。
解决办法
在ecosytem.json
文件中设置watch_options
选项,如下
"watch_options": { "usePolling": true }
经实践,可解决。有兴趣的可研读这里。