PM2 ecosystem.config.js中ignore_watch配置致应用频繁重启问题
解决PM2 ecosystem.config.js中ignore_watch配置无效的问题
核心问题分析
- 手动配置
ignore_watch会覆盖PM2默认的忽略列表,所以pm2 start index.js --watch默认自动忽略的目录(比如.pm2、.vscode_server),在自定义配置里必须手动添加才能生效。 - 正则表达式转义错误:JS字符串中反斜杠
\是转义符,要传递给PM2匹配.(正则元字符),必须写成\\.,否则.会被当成匹配任意字符,而非实际的点号。 - 数组元素格式错误:每个数组元素是独立的正则规则,不能用逗号分隔多个规则,否则会被当成一个完整的正则表达式(比如
".*config.js,package-lock.json"会匹配包含逗号的路径,完全不符合预期)。
正确的配置示例
module.exports = { apps : [{ name: "appname", script: "./index.js", watch: true, max_memory_restart: "1G", // 修正原拼写错误:max_mamory_restart → max_memory_restart ignore_watch: [ // 忽略隐藏目录及子文件 "\\.pm2/**", "\\.vscode_server/**", "\\.bashrc", "\\.bash_history", "\\.bash_logout", "\\.cache/**", "\\.config/**", "\\.gitignore", "\\.lesshst", "\\.local/**", "\\.npm/**", "\\.profile", "\\.sudo_as_admin_successful", // 忽略临时文件、依赖及日志等 ".*\\.swp", "snap/**", ".*config.js", "package-lock.json", "node_modules/**", "jira/**", "logs/**" ] }] }
关键注意事项
- 用
/**后缀匹配目录下所有子文件和子目录,确保目录内任何变更都不会触发重启。 - 如果不确定哪些路径触发重启,可以执行
pm2 logs查看实时日志,找到触发重启的路径后,针对性添加到ignore_watch中。
内容的提问来源于stack exchange,提问作者redditor
相关产品推荐
相关产品推荐

