NodeJS 下一篇:Next.js 13应用程序在生产中随机时间间隔后无法导航到某些路由

moiiocjp  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(77)

我在DigitalOcean droplet上托管了一个**Next.js(v13.5.2)**应用程序和Strapi。我已经设置了Nginx来管理路由。但是,在使用npm run buildnpm run start(使用PM2)启动应用程序后的5到36小时内,应用程序开始出现故障。

症状:

  • 主页加载成功。
  • 其中一个客户端渲染(CSR)页面加载。
  • 路由/specials/giftcards/contact无法工作。点击这些路由的导航链接会将我重定向回domain.com,而不会尝试访问所需的页面。
  • Next.js或Strapi没有输出错误。
  • 即使我尝试在没有域名和绕过Nginx的情况下运行,这种行为仍然存在。

环境详情:

  • 操作系统:Ubuntu 23.04
    *Node.js:v20.5.0
    *npm:v10.1.0
    *Next.js:v13.5.2

在浏览器的网络选项卡中,当点击其中一个故障链接时,会导致数据大小为0 B304 HTTP响应
我提供了一个链接到整个代码库,以获得更好的上下文:nextjs-website on GitHub.请注意,GitHub上的版本包含一些图像优化错误,但我已经在本地版本中修复了它们。然而,即使在这些修复之后,路由问题仍然存在。

尝试:

1.我尝试运行应用程序没有域名没有使用Nginx,看看他们是否是问题的根源。
1.我重新启动了Next.js服务器多次,以观察重新启动后问题是否会自行解决。
1.我还检查了控制台和服务器日志,以查找与路由或任何其他应用程序功能相关的任何潜在错误或警告,但没有发现。
1.作为临时解决方案,我必须停止并删除当前的PM2进程,然后重新运行buildstart

预期结果:

  • 我预计绕过域和Nginx可能会解决路由问题,从而正确加载/specials/giftcards/contact路由。
  • 我还期望在日志中找到一些错误或警告,这些错误或警告可能会给给予一个线索,说明为什么这些路由行为不端。

实际结果:

  • 对域名和Nginx进行加密对这个问题没有影响;相同的路由仍然无法正确加载。
  • 日志未提供与此问题相关的任何错误或警告。
  • 此外,点击这些路由的链接将我重定向回根域(domain.com),而不是导航到预期路由的预期行为,在浏览器的网络选项卡中,它导致了数据大小为0 B304 HTTP响应

临时解决方案:

我发现暂时解决这个问题的唯一方法是停止并删除当前的PM2进程,然后重新运行npm run buildnpm run start

zed5wv10

zed5wv101#

## Possible Fix for Issue with `next`

I have recently encountered an issue and managed to find a possible solution. However, I'm trying to understand the underlying reason why this fix works. So far, this workaround has been stable without any problems.

**Original Code**:
```javascript
next: { revalidate: 0 }

修改代码

// Inside the config.ts file
export const revalidate = 3600;

通过上述修改,我注意到这个问题似乎得到了解决。我的假设是,这个问题可能与缓存问题或内存泄漏有关,特别是对于next Image。这可能会导致系统充满并随后出现故障。
我很欣赏这方面的见解,如果我的假设是错的,请纠正我。

相关问题