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

Express+Sequelize项目访问/users/signup返回404问题排查

404问题根因

你请求的接口路径和后端实际注册的路径不匹配:

  • 查看app.js中的路由挂载代码:app.use("/api/users", authRoutes);,用户模块的所有接口统一前缀是/api/users
  • 查看用户路由文件,signup接口注册的子路径是/signup,请求方法为POST
  • 因此signup接口的完整合法路径是 http://localhost:3001/api/users/signup,你当前请求的http://localhost:3001/users/signup缺少了/api路径层级,匹配不到任何注册的路由,自然返回404。
  • 你提到能正常访问http://localhost:3001/users拿到响应,是因为你之前单独挂载过/users路径的测试路由,和当前引入的authRoutes路由组无关。
其他潜在代码问题(修正路径后会触发)

就算把请求路径改对,你当前代码还有几个会导致接口报错的问题,需要一并修复:

  • 表名拼写错误:login接口里的原生SQL写的是SELECT * FROM user WHERE email = ?,但你Sequelize模型里定义的表名是users,执行时会报表不存在的错误。
  • 混用ORM和原生SQL逻辑:既然已经引入Sequelize定义了User模型,不需要额外调用db.query写原生SQL,直接用Sequelize自带的模型方法(比如User.create、User.findOne)即可,避免手动写SQL出现语法、表名错误。
  • 非空字段缺失:User模型里nom、prenom、status三个字段都配置了allowNull: false,但signup接口创建用户实例时只传了email和password,插入数据库时会触发非空约束报错。
  • 模型导入方式错误:你贴出的User模型文件导出的是模型初始化函数,不是可直接实例化的模型类,控制器里直接写const User = require("../models/users")再new User()会触发类型错误,需要先通过Sequelize实例完成模型初始化,再导入初始化完成的模型类使用。
快速验证方式

把Postman里的请求地址改成http://localhost:3001/api/users/signup,请求方法选POST,请求体携带正确的JSON参数(包含nom、prenom、email、status、password字段),再发送请求就能正常匹配到路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:48:19