前言
当我们在使用 PM2 部署 Node.js 应用程序的时候,常常会遇到 “Error: listen EADDRINUSE” 的问题。这个问题的原因是当前的端口已经被占用。本文将介绍解决这个问题的方法,以便让你在使用 PM2 部署应用程序时更加顺畅。
解决方法
1. 确定当前端口被占用的进程
首先需要确定当前占用端口的进程,可以通过以下命令查看:
sudo lsof -i:端口号
如下图所示,可以看到当前端口8888已经被node进程占用:
2. 关闭占用该端口的进程
在确定了占用该端口的进程后,我们需要关闭该进程,可以通过以下命令来关闭:
kill -9 进程号
3. 修改 PM2 启动端口
如果想要避免该问题的再次发生,我们可以通过修改 PM2 启动的端口来解决这个问题。可以在 pm2 start 命令之后加上 --name 参数来指定 PM2 运行的进程名称,并通过 --port 参数指定启动的端口号,如下所示:
pm2 start app.js --name "app" --port 3000
4. 使用随机端口
最后一个解决该问题的方法是使用随机端口。可以在 app.js 中使用以下代码实现:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ - --------------- ------------ --- -------------- ---------- --- ---------------- -- -- - ------------------- ------- -- -------------------------------------------- ---
使用 server.listen(0) 来让 Node.js 使用一个随机的可用端口,服务器启动时会打印出使用的端口号:
Server running at http://localhost:55762
总结
本文介绍了使用 PM2 部署 Node.js 应用程序时容易遇到的 “Error: listen EADDRINUSE” 的问题,并提供了多种解决方法。选择合适的方式,可以避免该问题的再次出现,同时也可以避免在部署时遇到这个问题而浪费时间。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b2282248841e9894e7442d