浅析一次pm2升级导致部分项目无法启动的问题
一、问题背景
测试项目突然无法访问,任何路由全部报错:connect() failed (111: Connection refused) while connecting to upstream
[error] 20969#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: ***, server: ***, request: "GET /star HTTP/1.0", upstream: "http://**", host: "***", referrer: "http://***l"
[error] 20969#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: ***, server: ***, request: "GET /favicon.ico HTTP/1.0", upstream: "http://**", host: "***", referrer: "http://***l"
等等很多这种报错,起初以为是 nginx 的问题,如何验证呢?通过nginx转发后台请求,发现均正常,然后 nginx 还有个端口 9090的项目,可以正常访问,说明nginx转发没有问题;那么是什么问题呢?
可以参考这篇文章:https://blog.csdn.net/hithedy/article/details/86693393,一般都会是其上游项目有问题,我这里就是 3000 端口的上游服务启动失败导致了问题。
二、pm2升级导致问题
进入容器里,输入命令 pm2 list 果然状态为 error;然后就 pm2 log 查看为啥会 error,发现大量报错日志如下:
/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js:30
import(url.pathToFileURL(process.env.pm_exec_path));
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3
所以猜测是版本的问题,然后看了下 容器里的 pm2 版本已经是 5.2 多了,我本地是 4.4 ,之前正常的是 5.1.2,然后再看了下 node 版本是14.多,所以猜测是 pm2 的最新版本,要求的 node 版本不适配的问题。
解决方案:将 pm2@5.1.2 即可,或者 查看pm2文档,去看看要求的 node 最低版本是多少即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律