【问题标题】:How to trigger nextjs default 500 error page如何触发nextjs默认500错误页面
【发布时间】:2022-05-10 17:00:06
【问题描述】:

我无法触发 Next.js 的 500 错误页面。大多数资源都在讨论制作自定义错误页面,但 Next.js 文档简要提到了他们默认的 500 错误页面。我想在 API 以 500 状态响应时触发此默认页面。

如果 API 响应为 500,Next.js 应该会显示 500 错误页面。至此,它返回到发出请求的页面。

return res.status(500).end();

【问题讨论】:

  • 这能回答你的问题吗? How to throw a 500 error from getStaticProps
  • 如果我直接抛出 500 渲染,但此解决方案并不能完全回答我的问题。 getStaticProps & getServerSideProps 不会在表单提交时运行。响应 500 或手动抛出不会触发 500 页面。
  • 可以在客户端手动渲染错误页面,见nextjs.org/docs/advanced-features/…
  • 这很有帮助,谢谢。你知道为什么 500 的响应状态不会触发错误页面吗?现在的解决方案似乎是手动重定向而不是 500 响应或在收到 500 响应后重定向。
  • 您需要自己处理这些 API 响应才能触发 500 错误页面。

标签: javascript next.js


【解决方案1】:

我找到的唯一解决方案是从getServerSideProps 抛出一个未处理的错误:

res.statusCode = 500;
throw new Error('Internal Server Error');

我看到 NextJs 将其作为 500 状态代码处理,但仅在生产/暂存环境中。 npm run dev 将不起作用,您将无法看到默认的 500 页面。

我需要抛出一个 500 状态代码来阻止 Google 对我的页面进行取消索引,因为页面内容发生了重大变化,并且该页面中的产品不再可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 2012-07-15
    • 1970-01-01
    • 2013-10-06
    • 2012-08-03
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多