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

Express服务POST /users/signin接口报500内部错误排查

500认证接口错误排查结果

核心根因

笔误导致的方法调用错误:你在生成JWT令牌时把方法名拼错了。
你在signin和signup两个控制器方法里,都写了jwt.sing(),但jsonwebtoken库生成令牌的正确方法名是jwt.sign(),字母n后面漏了g。

  • 代码执行到生成token这一步时,会直接抛出TypeError: jwt.sing is not a function的类型错误
  • 错误被你写的catch块捕获,直接返回500状态码,这就是接口报错的直接原因
  • 你能在MongoDB里查到正常存储的用户数据,是因为注册逻辑里User.create()的执行顺序在JWT生成之前,数据已经成功写入数据库,但后续生成token步骤失败,导致整个接口返回500,前端拿不到正常响应。

修复步骤

把用户控制器文件里两处写错的方法名修正即可:

  1. 修正登录接口的token生成代码:
// 原错误代码 const token = jwt.sing(...)
const token = jwt.sign({ email: existingUser.email, id: existingUser._id }, 'test', { expiresIn: "1h" });
  1. 修正注册接口的token生成代码:
// 原错误代码 const token = jwt.sing(...)
const token = jwt.sign({ email: result.email, id: result._id }, 'test', { expiresIn: "1h" });

改完重启服务,认证接口就能正常返回200响应了。

额外优化建议

  • 你贴的服务端入口代码里MongoDB连接字符串const CONNECTION_URL = '**THIS_IS_MY_MONGO_DB;末尾缺少闭合单引号,如果服务启动时能正常连接数据库,说明是你贴代码打码时漏写,不用修改;如果启动时报语法错误,补上末尾的单引号即可。
  • 建议在所有接口的catch块里加一行错误日志打印,后续再遇到500错误直接看服务端控制台的错误栈,就能快速定位问题,不用花几小时盲查:
catch (error) {
  console.log('接口运行错误:', error);
  res.status(500).json({ message: 'Algo salio mal.' });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:03:23