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

Next.js错误边界未捕获异常求助:RedirectErrorBoundary报错

Next.js 错误边界控制台未捕获异常问题

问题现象

自定义error.tsx错误边界可正常渲染错误页面,reset功能也能正常触发,但浏览器控制台始终提示异常未被捕获,报错信息显示错误发生在<RedirectErrorBoundary>组件中。

问题原因

Server Action中直接reject字符串而非Error实例,Next.js处理Server Action错误时,无法将字符串错误正确包装为可被错误边界捕获的标准化错误对象,导致错误渗透到框架内部的RedirectErrorBoundary,最终在控制台抛出未捕获异常。

解决方案

在Server Action中确保抛出的是Error实例而非字符串,直接使用throw new Error()替代Promise的reject即可,Server Action本身支持异步抛出错误。

修改后的auth.ts代码

import 'server-only'

export async function tryLogin(username: string, password: string) {
  "use server"
  // 直接抛出Error实例,替代Promise reject字符串
  throw new Error("Login failed")
  
  // 带逻辑判断的示例写法:
  // if (new Date().getTime() % 2 === 0) {
  //   redirect("/")
  // } else {
  //   throw new Error('Login failed')
  // }
}

补充说明

  • Server Action本身是异步函数,无需手动返回Promise,直接throw错误即可被Next.js错误边界正确捕获
  • 自定义error.tsx会正常接收Error类型的错误对象,reset功能不受影响
  • 修改后控制台将不再出现未捕获异常提示,错误会被正确限制在自定义错误边界内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:05:02