PM2 启动 Node.js 应用时出现 “Error: listen EADDRINUSE” 错误的解决方法
当使用 PM2 启动 Node.js 应用时,有时会出现 “Error: listen EADDRINUSE” 错误,这表示该端口已经被占用。本文将介绍如何解决这个问题。
- 查找占用端口的进程
首先,我们需要查找哪个进程占用了该端口。可以使用以下命令:
sudo lsof -i :端口号
例如,如果端口号为 3000,可以使用以下命令:
sudo lsof -i :3000
该命令会输出占用该端口的进程信息。
- 结束占用该端口的进程
如果找到了占用该端口的进程,可以使用以下命令结束该进程:
sudo kill 进程号
例如,如果占用该端口的进程号为 1234,可以使用以下命令结束该进程:
sudo kill 1234
- 修改应用端口号
如果该端口被其他应用占用,可以修改应用的端口号。可以在应用代码中修改端口号,或者在启动命令中指定端口号。
例如,在应用代码中修改端口号:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ---- - ----- ----- ------ - ----------------------- ---- -- - -------------- -------- --- ------------------- -- -- - ------------------- -- --------- -- ---- ---------- ---
在启动命令中指定端口号:
pm2 start app.js --name myapp -- --port 3001
- 避免端口冲突
为了避免端口冲突,可以在启动应用时指定一个随机端口号。可以使用以下代码生成一个随机端口号:
const PORT = process.env.PORT || Math.floor(Math.random() * 65535);
在启动命令中指定环境变量:
PORT=0 pm2 start app.js --name myapp
这将在启动应用时自动选择一个空闲端口。
总结
在使用 PM2 启动 Node.js 应用时,遇到 “Error: listen EADDRINUSE” 错误时,可以通过查找占用端口的进程、结束占用该端口的进程、修改应用端口号或者避免端口冲突来解决该问题。希望本文对解决该问题有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650ea5cf95b1f8cacd7bb9a4