You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js服务器重启报EADDRINUSE及生成未知文件问题求助

问题排查与修复

核心问题

你的配置和代码中存在两处逗号错误,导致port变量的值是带逗号的字符串"4001,":

  1. .env文件中PORT=4001,末尾的逗号,使得环境变量读取结果包含多余逗号
  2. 服务器代码中const port = process.env.PORT,末尾的多余逗号(存在语法隐患)

当app.listen()接收到非数字格式的字符串参数时,Node.js会将其当作Unix域套接字的路径,而非TCP端口号。这会在根目录生成对应名称的套接字文件(即你看到的4001文件),重启时因该套接字文件未被清理,就会抛出EADDRINUSE错误。

修复步骤

  1. 修正.env文件:去掉PORT值末尾的逗号
# Server configuration 
PORT=4001
  1. 修正服务器代码:去掉port变量定义末尾的逗号,同时将port转为数字类型(确保被识别为TCP端口)
import express from "express";
import dotenv from "dotenv";

const app = express();

app.use(express.json());
dotenv.config();

// 转为数字类型,明确指定为TCP端口
const port = Number(process.env.PORT);
 
// Server Startup
app.listen(port, () => {
  console.log(`Server started on port ${port}`);
});
  1. 清理遗留文件:删除根目录下生成的4001套接字文件,避免重启时报错
rm 4001

验证修复

重新启动服务器,此时port会被正确识别为数字4001,Node.js将绑定TCP端口4001,不会再生成多余文件,重启也不会触发端口占用错误。

内容的提问来源于stack exchange,提问作者Valor Hec07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:42:39