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

Strapi控制器抛出NotFoundError却返回500而非404,如何修复?

修复Strapi抛出NotFoundError却返回500状态码的问题

我有一个Strapi控制器方法会抛出NotFoundError:

async matchTrack(ctx) {
  throw new NotFoundError('YO NOT FOUND');
}

当我调用该接口时,错误已抛出,但响应状态码为500而非404。

[2023-06-08 16:05:39.333] error: YO NOT FOUND NotFoundError: YO NOT FOUND
at Object.matchTrack

以下是修复方案:

  • 确认NotFoundError的正确导入
    必须导入Strapi官方提供的错误类,否则内置错误处理中间件无法识别该错误类型,默认返回500状态码。Strapi v4的正确导入方式:

    // CommonJS 语法
    const { NotFoundError } = require('@strapi/utils/lib/errors');
    
    // ES模块语法
    import { NotFoundError } from '@strapi/utils/lib/errors';
    
  • 使用上下文内置的notFound方法(更简便)
    直接调用ctx对象的notFound方法,它会自动设置404状态码并生成标准错误响应,无需手动实例化错误类:

    async matchTrack(ctx) {
      ctx.notFound('YO NOT FOUND');
    }
    
  • 检查自定义错误处理中间件
    如果项目中存在自定义错误处理中间件,需确认它没有覆盖Strapi默认逻辑,保证NotFoundError类型的错误被正确映射到404状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:52:02