我关注了下一个docs regarding a custom error page。如果在getStaticProps
发生某些错误,我想重用错误页面。类似于:
const Page: NextPage<Props> = ({ pageData, error }: Props) => {
if (error) return <Error statusCode={500} />;
return <Page data={pageData} />;
};
export const getStaticProps: GetStaticProps = async ({
params,
}: {
params: { [prop: string]: string[] };
}) => {
const { slug } = params;
const {pageData, error} = getPageData(slug)
return {
props: {
pageData: page || null,
error: error || null,
},
};
};
export default Page;
错误页面与文档中的页面相同:
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;
这是可行的,但状态码是错误的。Nextjs仍然用状态码200来响应对该页面的请求。我需要它将状态码设置为500,就像有服务器错误一样。
1条答案
按热度按时间oxf4rvwz1#
如果您使用“getServerSideProps”或“getStaticProps”,则可以更改页面状态代码,您只需要在返回页面属性之前更改响应状态代码: