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

MERN应用报错Cannot GET /api/items,自定义路由无法识别该如何解决?

问题1:Cannot GET /api/items报错解决

你当前只在路由配置里注册了POST /api/items和DELETE /api/items/:id两个接口,没有定义GET方法的对应路由,用GET请求访问自然返回404。
需要在items.routes.js的路由配置里补充对应GET路由,示例:

// 获取所有item,需要先在items.controller.js里实现getAll方法
router.get('/', items.getAll);
// 获取单个item,需要先在items.controller.js里实现getOne方法
router.get('/:id', items.getOne);

问题2:POST路由无法访问排查&解决

按优先级排查以下几个配置点:

  • 确认项目根目录下存在public文件夹:multer的存储配置指定了文件上传目标路径为./public/,如果文件夹不存在,文件上传会失败,进而导致整个POST请求被拦截。
  • 确认POST请求格式符合要求:你使用了upload.single('icon')中间件,所以请求必须是multipart/form-data格式,且上传的文件字段名必须为icon,如果用JSON格式发请求、或者字段名不匹配,multer会直接拒绝请求。
  • 临时测试路由是否正常注册:可以先跳过multer和controller逻辑,加一行测试路由验证配置有效性:
// 加在items.routes.js的路由配置里
router.post('/test', (req, res) => res.send('POST路由正常'));

如果POST请求/api/items/test能正常返回,说明路由注册逻辑没问题,问题出在multer配置或者items.create的controller内部逻辑。

  • 确认路由注册顺序正确:你当前代码里require('./routes/items.routes')(app)写在所有全局中间件之后,这个顺序是正确的,不会出现路由被覆盖的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:12:07