Express应用中/signup POST路由无响应,请求排查代码问题
问题排查与修复
你的代码存在两个关键问题,导致POST请求返回“无响应”:
1. 路由路径格式错误
在auth.js中,你定义的signup路由路径为"signup",正确写法应该是"/signup"。Express的Router路径如果不带开头的斜杠,会和父路由(/api/v1)拼接异常,导致请求无法匹配到对应的处理函数。
修复后的auth.js路由代码:
router.post("/signup", (req, res) => { const password = req.body.password; console.log(password); // 必须添加响应返回逻辑 res.status(200).json({ message: "请求已处理" }); });
2. 未向客户端返回响应
你的signup路由处理函数仅执行了console.log(password),但没有调用res.send()、res.json()或res.sendStatus()等方法向客户端返回响应。客户端会一直等待服务器回复,最终出现“无响应”的情况。
额外优化建议
在index.js中,建议将express.json()、cors()等全局中间件放在路由定义之前,确保所有路由都能正常使用这些中间件(这是Express的标准最佳实践):
// 先挂载全局中间件 app.use(express.json()); app.use(cors()); app.use(morgan("combined")); // 再定义路由 app.get("/", (req, res) => { res.sendStatus(200); }); app.use("/api/v1", authRoute);
修复后,POST请求将能正常匹配/api/v1/signup路由,且客户端会收到服务器返回的响应。
内容的提问来源于stack exchange,提问作者Anapeksha Mukherjee
相关产品推荐
相关产品推荐

