React+Node.js应用出现ERR_CONNECTION_REFUSED连接错误求助
排查 ERR_CONNECTION_REFUSED(localhost:5001)问题的核心步骤
1. 先确认后端服务是否真在运行
- 终端执行对应命令检查端口占用:
- Windows:
netstat -ano | findstr :5001 - Mac/Linux:
lsof -i :5001
- Windows:
- 无结果=后端没启动:
- 进入后端目录执行启动命令(
npm start/node server.js/nodemon),盯着终端看启动报错(比如依赖缺失、语法错、端口被占) - 若报「端口已占用」,要么改后端端口,要么杀掉占5001的进程
- 进入后端目录执行启动命令(
2. 核对后端端口配置
- 确认代码里监听的确实是5001,比如Express代码:
const port = process.env.PORT || 5001; app.listen(port, () => console.log(`Server running on port ${port}`)); - 检查
.env文件里的PORT变量,别被改成了其他值
3. 直接验证后端接口可用性
- 用Postman、curl或浏览器访问
http://localhost:5001/api/users/register(替换成你的实际接口路径) - 直接访问也报错=后端服务本身有问题:
- 查路由是否正确定义
- 查CORS、body-parser这类中间件是否配置到位
- 查数据库连接是否失败导致服务启动异常
4. 排查跨域与前端请求配置
- 后端能访问但前端报错:
- 确认后端装了
cors中间件并启用:const cors = require('cors'); app.use(cors()); // 或按需配置允许的域名 - 核对前端请求URL拼写,别把端口写成5000或多打斜杠
- 若用了Create React App的代理,确认
package.json里的proxy是http://localhost:5001,且重启过前端服务
- 确认后端装了
5. 本地环境与防火墙排查
- 暂时关闭本地防火墙测试,看是否是端口被拦截
- 关掉VPN/代理工具,避免localhost请求被转发
- 尝试用
127.0.0.1:5001代替localhost:5001发起请求,排除DNS解析问题
常见代码错误点
后端侧
- 服务器启动代码有语法错误,导致服务启动失败(漏写括号、变量未定义等)
- 数据库连接超时/失败,服务卡在启动流程,未真正监听端口
- CORS中间件只允许特定域名,前端域名不在白名单里
前端侧
- 请求URL硬编码错误(比如写成
http://localhost:5000) - 用相对路径但代理配置不正确
- 前端环境变量里的API地址配置错误
内容的提问来源于stack exchange,提问作者Nadir Esmail
相关产品推荐
相关产品推荐

