Node.js/Axios调用出现ERR_CONNECTION_RESET错误求助
解决Axios请求ERR_CONNECTION_RESET问题
可能的原因及修复步骤
1. 调整服务端启动顺序
你的服务端代码中app.listen(port)写在了路由定义之前,虽然Express允许这种写法,但可能导致路由未完成注册就启动服务器。建议将app.listen移到所有路由和中间件定义之后,同时增加启动日志确认服务状态:
const express = require("express"); const app = express(); const cors = require("cors"); const mongoose = require("mongoose"); const bodyParser = require("body-parser"); const Reservations = require("./models/reservations"); require("dotenv").config(); app.use(cors()); app.use(express.json()); app.use(bodyParser.urlencoded({ extended: true })); app.get('/test', (req, res) => { console.log('test') res.send('test ') }) const port = 5000; app.listen(port, () => { console.log(`Server running on port ${port}`); });
2. 检查服务端是否正常运行
- 启动服务后查看控制台是否有报错:比如代码中引入了
mongoose但未做连接配置,可能导致服务启动后崩溃,需要补充数据库连接逻辑:
// 在app.listen前添加mongoose连接代码 mongoose.connect(process.env.MONGODB_URI) .then(() => console.log("MongoDB connected")) .catch(err => console.log(err));
- 验证5000端口是否被监听:
- Windows系统执行:
netstat -ano | findstr :5000 - macOS/Linux系统执行:
lsof -i :5000
如果端口未被占用,说明服务未正常启动,需排查服务端代码的语法或依赖错误。
- Windows系统执行:
3. 优化CORS配置
虽然你使用了app.use(cors()),但可以明确指定允许的请求源,避免潜在的跨域配置问题:
app.use(cors({ origin: "http://localhost:3000" // 替换为你的React项目实际运行端口 }));
4. 客户端代理配置(可选)
如果你的React项目基于create-react-app搭建,可以在package.json中添加代理配置,简化请求路径同时规避跨域问题:
{ "proxy": "http://localhost:5000" }
之后客户端请求可简化为:
Axios.get("/test").then(() => { console.log("test"); }).catch((err) => { console.log(err) })
内容的提问来源于stack exchange,提问作者KarolJ12
相关产品推荐
相关产品推荐

