Express+Sequelize+MySQL项目/products接口报Cannot GET错误如何解决
问题解决方法
你遇到的Cannot GET /products错误核心是Express路由前缀注册时缺少前导斜杠导致路由匹配失败,修复步骤如下:
1. 修复入口文件路由注册规则
找到server.js中的路由注册代码:
app.use("products", productRouter); /* app.use("variant", variantRouter); */
修改为带前导斜杠的路径前缀:
app.use("/products", productRouter); /* app.use("/variant", variantRouter); */
Express的路由匹配规则要求,路由前缀如果要匹配根路径下的子路由,必须以/开头,否则会按照相对路径规则匹配,无法命中你请求的/products路径。
其他可同步修复的潜在问题
- 产品路由GET方法注释代码存在变量名错误:注释逻辑中定义的变量是
products,但判断条件写的是if (product),后续启用该逻辑时需要修正变量名避免报错。 - Product模型的时间戳配置属性名错误:你配置的
{timestamp: false}属性名应为复数{timestamps: false},否则无法关闭Sequelize自动生成createdAt、updatedAt字段的逻辑。 - 产品POST接口异常无返回:当前POST接口捕获异常后仅打印日志,未给前端返回响应,会导致前端请求超时,建议补充异常返回逻辑:
router.post("/", async (req, res) => { try { const product = await Product.create(req.body); res.send(product) } catch (error) { console.log(error); // 补充异常返回 res.status(500).send({message: '产品创建失败', error: error.message}) } })
内容的提问来源于stack exchange,提问作者Olusanya Michael
相关产品推荐
相关产品推荐

