服务器端渲染不适用于生产构建 Next.js

Posted

技术标签:

【中文标题】服务器端渲染不适用于生产构建 Next.js【英文标题】:Server side rendering not work on production build Next.js 【发布时间】:2020-10-22 20:25:05 【问题描述】:

我想将我的 Next.js 应用程序部署到我自己的主机上。我运行next export 来构建应用程序,它可以工作并且我能够在我的托管服务器上运行它。但问题是应用程序不是服务器端渲染(在除主页之外的任何页面上重新加载应用程序都会导致错误):

我是 Next.js 的新手,我以前的 react 应用程序无法进行服务器端渲染,所以我对此有点困惑。欢迎任何帮助,谢谢!

【问题讨论】:

您遇到的错误是什么?请提供更多详细信息。 @subashMahapatra 未找到错误,我已经编辑了我的问题 【参考方案1】:

根据文档,next export 用于将您的项目导出为静态 html。更重要的是,the docs state(强调我的):

next export 适用于您的网页都没有的情况 服务器端或增量数据要求(虽然 静态渲染的页面仍然可以fetch data on the client side 很好)。

如果您想创建一个只有部分页面的混合网站 预渲染为静态 HTML,Next.js 已经自动完成了 为你!阅读Automatic Static Optimization了解详情。

next export 还会导致增量静态生成等功能 和再生被禁用,因为它们需要下一次启动或 无服务器部署运行。

这意味着如果您的路由需要使用 getServerSideProps 获取服务器端数据,您需要将项目作为 Node.js 服务器运行 through Next.js (next build && next start),或者使用 @987654325 @。

【讨论】:

哦,好吧,我想我想念那个静态部分文档。也许我会尝试另一种方法来部署它。顺便说一句,谢谢! @cbr 你能确认通配符路由是否会以这种方式工作吗?就像我有一个路由“abc/:def”,并且我根据客户端“def”的值获取详细信息,next export 会抛出错误吗?

以上是关于服务器端渲染不适用于生产构建 Next.js的主要内容,如果未能解决你的问题,请参考以下文章

了解与学习 Next.js

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

像 next.js 这样的服务器端渲染中状态管理的最佳方法是啥?

如何在服务器端渲染中将样式应用于 Next.js 中的 HTML?

使用 React 和 Next.js 构建博客

Reactstrap 不适用于 Razzle 服务器端渲染