非Node.js开发者修改页面标题后不生效,求排查(CentOS 7、PM2)
先确认pm2运行的是不是你修改的文件
执行pm2 show web,查看输出里的script path字段,确认路径和你编辑的/project/source.js完全一致。如果路径不符,你改的文件根本没被pm2加载。检查是否需要编译/构建步骤
不少Node.js项目会把源码编译成生产环境文件(比如存放在dist或build目录),pm2实际运行的是编译后的文件而非你修改的source.js。这种情况下,改完源码后需要执行项目的构建命令(比如npm run build),再重启应用。验证文件权限是否正确
执行ls -l /project/source.js查看文件权限和所有者,如果pm2的运行用户没有读取该文件的权限,会导致加载旧内容。比如你用root编辑了文件,但pm2是用普通用户启动的,就会出现这个问题,可通过chown调整文件所有者。换用更可靠的pm2重启方式
你当前用stop+start的方式,试试直接执行pm2 reload web或pm2 restart web,这两个命令会强制重新加载应用代码,避免一些缓存问题。查看pm2日志定位问题
执行pm2 logs web查看应用日志,看看有没有加载新内容的提示,或者是否存在报错信息,日志能帮你快速定位到底是文件没加载还是代码本身有问题。确认操作的是正确的pm2实例
CentOS7上可能存在多个用户启动的pm2进程,比如你用普通用户操作pm2,但web应用是root用户启动的。执行ps aux | grep pm2查看所有pm2进程,必要时加上sudo前缀执行pm2命令(比如sudo pm2 restart web)。
内容的提问来源于stack exchange,提问作者Ago

