Vercel Next.js 在预渲染页面时生成错误

Posted

技术标签:

【中文标题】Vercel Next.js 在预渲染页面时生成错误【英文标题】:Vercel Next.js build error while prerendering pages 【发布时间】:2021-08-17 18:05:57 【问题描述】:

我正在我的网站上运行 Vercel 编译,但无法摆脱导出时出现的预渲染错误。 有谁知道发生这种情况的原因并可以帮助我解决这个问题? 我的 github 和所有代码:https://github.com/M0rilla/MyProfile

对于每个页面都有如上的错误:

    Error occurred prerendering page "/resume". Read more: https://nextjs.org/docs/messages/prerender-error
Error: Minified React error #321; visit https://reactjs.org/docs/error-decoder.html?invariant=321 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.

Error: Export encountered errors on following paths:
21:20:09.541        /
21:20:09.541        /404
21:20:09.541        /500
21:20:09.541        /experiences
21:20:09.542        /resume
21:20:09.542        /skills

我没有自定义 404 或 500 页面。

【问题讨论】:

发生这种情况的原因(无效的反应挂钩调用)直接在错误链接中说明。如果您在阅读那里的信息后不确定为什么您的 react hook 调用无效,请确保将您的 /resume 页面的代码放在这里,否则我们无法提供帮助。 我为我的一个页面添加了代码以供查看。 “页面”目录中包含的所有页面都显示此错误,包括我没有创建的 404 和 500 有一个链接到我的 github,上面有这个问题的项目! 虽然我无法使用 Vercel 部署测试您的代码,但您的问题几乎可以肯定是由于您将 node_modules 文件夹和 .next 构建工件提交给 git,您应该 永远不要。您应该使用node_modules/.next/ 创建一个.gitignore 文件。见docs.github.com/en/github/getting-started-with-github/… 和***.com/questions/1274057/… 你能用这个评论创建一个答案吗?我的生产代码现在工作正常!添加 gitignore 文件并从 repo 中删除这些文件夹救了我。谢谢! 【参考方案1】:

您是否尝试过检查这些情况:

确保将所有非页面移出页面文件夹 检查是否有任何假定道具可用的代码,即使它可能不可用。例如,为所有动态页面的 props 提供默认数据。 检查您可能依赖的任何过时模块 确保您的组件在 getStaticPaths 中启用后处理回退。后备文档 确保您没有尝试导出(下一次导出)启用了服务器端呈现 (getServerSideProps) 的页面

【讨论】:

在“pages”中唯一的非页面是_app.js。我会将代码添加到问题中。我是 Next.js 的新手,所以我无法确定其他情况。【参考方案2】:

Vercel 会针对下一次构建进行一些自定义工作,因此从本地计算机或 node_modules 文件夹提交 .next 构建工件可能会以不可预测的方式干扰构建,从而给出看似无意义的错误消息。确保不要提交 .nextnode_modules 以避免这种行为。

【讨论】:

以上是关于Vercel Next.js 在预渲染页面时生成错误的主要内容,如果未能解决你的问题,请参考以下文章

Next.js 静态数据生成以及服务端渲染的方式

Next JS 中的页面预渲染发生错误 [重复]

使用 getStaticProps() 将 Next.js 部署到 Vercel 的速率限制问题

如何修复 Next.js Vercel 部署模块未找到错误

鱼和熊掌兼得:Next.js 混合渲染

学不动了,Vercel 推出比 Vite 快 10 倍的打包器 Turbopack