ETC
[Next.js] 커스텀 에러 페이지 만들기 (feat. 404 에러 페이지)
mine-dong
2022. 11. 11. 00:02
SEO(검색엔진) 최적화에 있어서도 404에러 페이지를 커스텀 하는 것이 좋다고 한다.
그래서 Next.js 에서 404에러 페이지를 커스텀 할 수 있는 방법을 찾아보았다.
pages 폴더 하위에 404.js(or 404.ts) 파일을 만들어 해당 파일에 404 에러 페이지 커스텀을 해주면 된다.
(404 페이지에서 데이터를 사용해야한다면 getStaticProps를 사용할 것을 권장한다.)
// pages/404.js
export default function Custom404() {
return <h1>404 - Page Not Found</h1>
}
404 외에도 401, 402, 500, 503 등 다양한 HTTP 에러가 존재하는데
500.js(or 500.ts)로 각각의 에러 페이지를 커스텀할 수 있지만,
// pages/500.js
export default function Custom500() {
return <h1>500 - Server-side error occurred</h1>
}
모든 에러를 다루고 싶다면 pages 하위에 _error.js(or _error.ts) 파일에서 작업하면 된다.
// pages/_error.js
function Error({ statusCode }) {
return (
<p>
{statusCode
? `An error ${statusCode} occurred on server`
: 'An error occurred on client'}
</p>
)
}
Error.getInitialProps = ({ res, err }) => {
const statusCode = res ? res.statusCode : err ? err.statusCode : 404
return { statusCode }
}
export default Error
공식 문서에 따르면 여기서 주의할 점은 _error.js는 개발환경에서는 작동하지 않고 production 환경에서만 작동한다는 것이다.
개발환경에서는 오류의 위치를 쉽게 파악할 수 있도록 콜 스택과 함께 에러만 발생한다고 한다.
참고: https://nextjs.org/docs/advanced-features/custom-error-page#404-page