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

提交登录凭证时遇404错误:POST /api/user/login路径未找到

404 Not Found错误排查与修复方案

核心问题1:路由文件错误

你提供的用户路由文件内容和server.js完全重复,属于复制错误。正确的用户路由文件应使用express.Router()定义子路由,而非重新创建Express实例并启动服务。

修正后的routes/userRoutes.js示例:

const express = require("express");
const router = express.Router();
const { registerUser, authUser, allUsers } = require("../controllers/userController");

// 注册接口
router.post("/", registerUser);
// 关键:添加登录接口路由
router.post("/login", authUser);
// 获取用户列表接口
router.get("/", allUsers);

module.exports = router;

核心问题2:端口不匹配

你的后端server.js监听的是8000端口(port = process.env.PORT || 8000),但前端login.js请求的是http://localhost:3000/api/user/login,端口不一致直接导致404。

修正前端请求地址:

const { data } = await axios.post(
    "http://localhost:8000/api/user/login", // 将3000改为8000
    { email, password },
    config
);

其他潜在问题检查

  • 确认后端服务启动后控制台输出server is listening at 8000,确保服务运行在正确端口
  • 验证server.js中require("./routes/userRoutes")的文件路径与实际文件位置一致
  • 优化控制器错误处理:当前authUser函数抛出错误时未正确返回响应,建议调整为:
    const authUser = async (req, res) => {
        const { email, password } = req.body;
        try {
            const user = await User.findOne({ email });
            if (user && (await user.matchPassword(password))) {
                res.json({
                    _id: user._id,
                    name: user.name,
                    email: user.email,
                    isAdmin: user.isAdmin,
                    pic: user.pic,
                    token: generateToken(user._id),
                });
            } else {
                res.status(401).json({ message: "Invalid Email or Password" });
            }
        } catch (error) {
            res.status(500).json({ message: "Server Error" });
        }
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:59:51