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

MERN栈项目POST /api/auth/signup请求失败求助排查

问题诊断与解决方案

核心问题1:路由挂载顺序错误

Express中app.listen()启动服务器后,后续代码不会再执行路由挂载逻辑,这直接导致/api/auth/signup路由未被注册,触发Cannot POST错误。

修复index.js,将路由挂载代码移至app.listen()之前:

import express from 'express';
import mongoose from 'mongoose';
import dotenv from 'dotenv';
import userRouter from './routes/user.routes.js';
import authRouter from './routes/auth.route.js';

dotenv.config();

mongoose
  .connect(process.env.MONGO)
  .then(() => {
    console.log('Connected to MongoDB!');
  })
  .catch((err) => {
    console.log(err);
  });

const app = express();

app.use(express.json());

// 先挂载所有路由
app.use('/api/user', userRouter);
app.use('/api/auth', authRouter);

// 再启动服务器
app.listen(3000, () => {
    console.log('Server is running on port 3000');
}); 

核心问题2:启动脚本路径拼写错误

package.json的start脚本中路径写成了pai/index.js,正确路径应为api/index.js,修正后:

{
  "scripts": {
    "dev": "nodemon api/index.js",
    "start": "node api/index.js"
  }
}

额外优化:控制器未返回响应

当前auth.controller.js的signup函数仅打印请求体但无响应返回,会导致请求长期挂起,建议补充基础响应逻辑:

export const signup = (req, res) => {
    console.log(req.body);
    // 返回基础响应避免请求挂起
    res.status(200).json({ message: "Signup request received" });
};

验证步骤

  1. 重启服务器:执行npm run dev
  2. 在Insomnia中发送POST请求到http://localhost:3000/api/auth/signup,请求体传入JSON格式用户数据(示例:{"username":"test","email":"test@example.com","password":"123456"})
  3. 检查控制台是否打印请求体,同时Insomnia是否收到响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:01:07