目前,我正在按照这个示例来学习如何在getInitialProps中重定向用户
https://github.com/zeit/next.js/wiki/Redirecting-in-%60getInitialProps%60
问题是,如果我想这样返回404,它将返回一个空白页,而不是通常的Next.js 404错误页。
context.res.writeHead(404)
context.res.end();
请注意,我知道使用ExpressJs和使用状态代码404可以工作,但是,对于这个项目,我不允许使用ExpressJs,所以我需要使用典型的nodejs writeHead来完成它。
8条答案
按热度按时间bt1cpqcv1#
下一个v10允许返回404页面(不带 prop ,但只是简单的,因为它是下面)
适用于我的完整代码:✅✅✅
文件:https://nextjs.org/blog/next-10#notfound-support
7nbnzgx92#
为了做到这一点,您必须在页面中呈现错误页面。
您可以执行以下操作:
如果您有一个自定义错误页面,您将不得不导入您的自定义
_error
页面,而不是导入next/error
。332nm8kg3#
沿着以下方式实现getInitialProps:
然后在render()中检查
err
是否在state中定义,在这种情况下返回ErrorPage(默认或自定义,取决于您的实现),就这样!errr中的statusCode只是用于ErrorPage上的更细粒度的消息,因此需要将其作为 prop 传递。xqk2d5yq4#
从NextJS10开始,您现在可以在
getStaticProps && getServerSideProps
的返回对象中包含notFound: true
以重定向到404页面以下是发行说明:https://nextjs.org/blog/next-10#redirect-and-notfound-support-for-getstaticprops--getserversideprops
brccelvz5#
这就像一个魅力~只需尝试catch in next/app,那么它对所有页面都有效
q7solyqu6#
如果您只需要像在cra中那样实现404 PAGE
所提供的代码可能会有所帮助:例如
qvk1mo1f7#
我是这么做的
lmvvr0a88#
我正在使用这个,它对我很有效