reactjs - NextJS 处理 "Server Error"和 "Client side error"的最佳实践

标签 reactjs error-handling next.js server-error

使用 NextJS,我看到 2 种错误:
服务器错误

  • 使用 throw new Error(...) 生成它在 getInitialProps 里面...
  • 它可能由于某些业务逻辑或意外的 API 响应而发生;
  • 截图:

  • Server error
    未处理的运行时错误
  • 使用 throw new Error(...) 生成它组件内部
  • 它可能由于某些业务逻辑而发生;
  • 这里的错误由 ErrorBoundary 捕获(设置在 _app.js 内)
  • 截图:

  • Unhandled Runtime Error
    问题 :
    未处理的运行时错误被捕获在错误边界内(就像它们在 ReactJS 中所做的那样)......如何最好地处理“服务器错误”......最佳实践是什么?

    最佳答案

    处理错误的最佳实践之一是使用 Early Return,通过返回 statusCode在 getInitialProps 中使用 prop 并使用该 statusCode在呈现页面后呈现错误页面,以防止处理页面内部的可能错误。

  • 如果一切正常 200
  • 如果不存在 404
  • 如果服务器错误 503
  • import Error from "next/error"
    
    function Page({ stars, statusCode}) {
      
      if(statusCode !== 200) {
        <Error statusCode={statusCode} />
      }
      
      return <div>Next stars: {stars}</div>
    }
    
    Page.getInitialProps = async (ctx) => {
      
      try{
        const res = await fetch('https://api.github.com/repos/vercel/next.js')
        const json = await res.json()
        
        if(res.status >= 400){
          return { stars: json.stargazers_count, statusCode: res.status }
        }
        
        return { stars: json.stargazers_count, statusCode: 200 }
       
        
      } catch(error){
        
        return {stars: null, statusCode: 503}
      }
      
    }
    
    export default Page
    

    关于reactjs - NextJS 处理 "Server Error"和 "Client side error"的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64583856/

    相关文章:

    php - PHP PDOException无法捕获

    node.js - 在 express/nestjs 中跨域设置 cookie(云端后端/本地主机上的 NextJS)

    javascript - 有条件地返回 React 组件以满足 Suspense 回退

    reactjs - 仅在 React 表单上重新呈现更新的元素

    javascript - 在单击按钮期间将值传递给具有异步 react 的另一个组件的方法

    reactjs - 无法读取React中未定义的属性 'map'

    validation - 如何测试字符串输入? (Dyalog APL)

    javascript - 如何将参数传递给函数并仍然访问事件以防止默认

    c# - 使用 ToArray() 将列表转换为数组

    javascript - 在 jsconfig.json 中使用 baseUrl 不适用于 Next.js