【pm2】watch不起作用的解决办法
用pm2做express.js应用的自动化部署工具,开发过程中发现用watch参数监控工程目录下文件内容变化时自动进行热加载的过程出现问题。
其只能监控到html文件的变化,对于js文件则监控不到。
详述如下
工程的目录结构类似如下:
project
|-- app.js
|-- ecosystem.json
|-- bin
|-- www
|-- other_folderbin/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
}经实践,可解决。有兴趣的可研读这里。