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

Postman调试Express接口报Cannot POST /api/password-reset 404错误

问题原因

接口返回404的核心错误在入口文件的路由挂载配置:你给密码重置路由配置的路径少了开头的前导斜杠/,和另外两个正常工作的路由写法不一致。
错误代码片段:

// 错误写法:路径开头没有/
app.use("api/password-reset", resetPasswordRoutes);

Express 框架要求挂载在应用根级别的路由路径必须以/开头,漏写斜杠会导致这个路由根本不会被匹配到/api/password-reset路径下,所有发往这个地址的请求都会因为找不到对应处理逻辑返回404。

即时修复步骤
  • 修改index.js中的路由挂载代码,补上开头的斜杠:
    // 修正后写法,和其他两个路由保持格式一致
    app.use("/api/password-reset", resetPasswordRoutes);
    
  • 终止当前运行的Node服务,重新执行启动命令重启服务,代码修改才会生效。
  • 回到Postman重新发起POST请求到http://localhost:5000/api/password-reset即可正常匹配路由。
后续排查清单(如果修复后仍报404按顺序核对)
  • 检查Postman的请求方法是否为POST,你定义的两个密码重置接口仅支持POST方法,用GET/PUT等其他方法请求也会返回404
  • 检查控制台启动日志,确认服务实际监听的端口是5000,如果5000端口被占用,服务会自动切换到其他端口,请求时要对应修改端口号
  • 检查请求路径拼写,确认没有把password-reset拼错、没有多打多余的斜杠或者特殊字符
可选代码优化(避免后续功能异常)

这些问题不会触发当前的404错误,但会导致功能运行不符合预期,建议一并修复:

  • 冗余依赖清理:Express 4.16.0及以上版本内置的express.json()、express.urlencoded()已经完全覆盖body-parser的功能,可以删掉body-parser依赖和对应的两行配置代码,减少冗余
  • 方法名逻辑修正:当前路由中根路径是发送重置邮件的逻辑,带userId/token的路径是提交新密码完成重置的逻辑,但两个处理函数的命名完全写反了,建议互换命名避免后续维护混淆
  • Token删除逻辑错误:Mongoose文档实例没有delete()方法,重置密码成功后删除token需要改成await token.deleteOne(),否则旧token会一直残留在数据库中
  • 拼写错误修正:代码中存在多处单词拼写错误,比如successfull应为successful、occured应为occurred、expire应为expired,建议修正避免接口返回内容出现低级错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:12:22