Next.js 应用在生产环境中频繁重新加载

Posted

技术标签:

【中文标题】Next.js 应用在生产环境中频繁重新加载【英文标题】:Next.js App reloads frequently in production 【发布时间】:2020-09-25 05:24:34 【问题描述】:

我刚刚通过 nginx 和 pm2 在生产环境中部署了我的第一个 Next.js 应用程序。一切似乎都还好,但应用程序在浏览器上经过一段时间后经常重新加载。我看到webpack-hmr 也在我的production 服务器中运行。 (我认为在生产中没有必要)

我正在使用自定义的server.js,我使用next build 然后NODE_ENV=production node server.js 命令在生产环境中运行我的应用程序,并使用pm2 重新启动我的服务器。

我在我的开发工具网络选项卡的屏幕截图下方添加了一个屏幕截图,它显示了在 production 上运行的 HMR。如果HMR 是浏览器重新加载的可能原因,那么我应该如何在生产环境中禁用它?

此外,如果由于 HMR 而没有发生“频繁重新加载”,那么导致它的原因是什么?

你们在生产中遇到过同样的问题吗?如果是这样,请分享您的知识和经验。谢谢。

编辑:我也在使用next-pwa,并且我的控制台上一直显示警告-

GenerateSW 已被多次调用,可能是由于在 --watch 模式下运行 webpack。第一次调用后生成的预缓存清单可能不准确!请参阅https://github.com/GoogleChrome/workbox/issues/1790 了解更多信息。

【问题讨论】:

【参考方案1】:

终于找到了解决办法。当以pm2 start server --env production 启动 pm2 时,我必须告诉我的环境模式。它在我的浏览器上完美运行。

【讨论】:

【参考方案2】:

通过在开发时禁用 pwa 来修复它

const prod = process.env.NODE_ENV === 'production'

module.exports = withPWA(
            pwa: 
                dest: 'public',
                disable: prod ? false : true
                
             )

【讨论】:

以上是关于Next.js 应用在生产环境中频繁重新加载的主要内容,如果未能解决你的问题,请参考以下文章

Next js 在生产环境中不使用 cookie

Firebase + Next.js 无服务器,在 GCP 上 - 如何管理登台、生产 + 本地

NextJS:如何为生产构建添加屏幕加载?

P11:生产环境打包

部署后如何强制客户端重新加载?

Next.js,Redux 应用程序在 localhost 上运行良好,但不能在生产服务器上运行