如何在我的React.js和Next.js应用程序上模拟HTTP 500错误?

fnatzsnv  于 2023-11-18  发布在  React
关注(0)|答案(1)|浏览(158)

我想模拟这个错误,这样我就可以检查显示的自定义错误页面,而不是HTTP 500,鉴于最近的安全漏洞。
我们包括在网站本身的特殊处理404和403,所以我想确保没有特殊处理的工作也错误。

b1uwtaje

b1uwtaje1#

通常情况下,当服务器抛出一个没有显式处理的错误时,返回500响应。(请参阅:处理服务器错误)。我在下面添加了两个apppages场景。在这两种情况下,访问/error都应该产生500响应。
如果您使用的是app API,那么添加一个在服务器上抛出错误的页面就可以了。

// app/error/page.jsx

export default function Page() {
  throw new Error("don't catch me for a 500 response");
  return <h1>you should not see me</h1>;
}

字符串
确保组件没有标记为客户端组件(文件顶部没有"use client")。当标记为客户端组件时,错误将由客户端抛出,而不是由服务器抛出。因此不会产生500响应。
如果你使用的是pages API,也可以做类似的事情。要在服务器上运行代码,我们使用getServerSideProps(参见:Server-side Rendering (SSR)

// pages/error/index.jsx

// this should run on the server
export async function getServerSideProps() {
  throw new Error("don't catch me for a 500 response");
  return { props: {} };
}

export default function Index() {
  return <h1>you should not see me</h1>;
}

相关问题