You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
900 B
JavaScript
50 lines
900 B
JavaScript
import React from 'react'
|
|
import getConfig from 'next/config'
|
|
|
|
const {publicRuntimeConfig} = getConfig()
|
|
|
|
const ErrorPage = ({error}) => {
|
|
const env = publicRuntimeConfig.SOS_ENV
|
|
if (!error)
|
|
return (
|
|
<>
|
|
<h2>Not Found</h2>
|
|
<p>This page was not found</p>
|
|
</>
|
|
)
|
|
|
|
return (
|
|
<>
|
|
<h2>{error.name}</h2>
|
|
<p>{error.message}</p>
|
|
{env === 'development' && (
|
|
<>
|
|
{error.stack && (
|
|
<p>
|
|
<pre>
|
|
{error.stack}
|
|
</pre>
|
|
</p>
|
|
)}
|
|
<p>
|
|
<pre>
|
|
{JSON.stringify(error, null, 2)}
|
|
</pre>
|
|
</p>
|
|
</>
|
|
)}
|
|
</>
|
|
)
|
|
}
|
|
|
|
ErrorPage.getInitialProps = ({ctx: {err, req, res}}) => {
|
|
if(!err) return {error: null}
|
|
|
|
if(res)
|
|
err.status = res.statusCode
|
|
|
|
return { error: err }
|
|
}
|
|
|
|
export default ErrorPage
|