我在DigitalOcean droplet上托管了一个**Next.js(v13.5.2)**应用程序和Strapi。我已经设置了Nginx来管理路由。但是,在使用npm run build
和npm 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 B的304 HTTP响应。
我提供了一个链接到整个代码库,以获得更好的上下文:nextjs-website on GitHub.请注意,GitHub上的版本包含一些图像优化错误,但我已经在本地版本中修复了它们。然而,即使在这些修复之后,路由问题仍然存在。
尝试:
1.我尝试运行应用程序没有域名和没有使用Nginx,看看他们是否是问题的根源。
1.我重新启动了Next.js服务器多次,以观察重新启动后问题是否会自行解决。
1.我还检查了控制台和服务器日志,以查找与路由或任何其他应用程序功能相关的任何潜在错误或警告,但没有发现。
1.作为临时解决方案,我必须停止并删除当前的PM2进程,然后重新运行build
和start
。
预期结果:
- 我预计绕过域和Nginx可能会解决路由问题,从而正确加载
/specials
,/giftcards
和/contact
路由。 - 我还期望在日志中找到一些错误或警告,这些错误或警告可能会给给予一个线索,说明为什么这些路由行为不端。
实际结果:
- 对域名和Nginx进行加密对这个问题没有影响;相同的路由仍然无法正确加载。
- 日志未提供与此问题相关的任何错误或警告。
- 此外,点击这些路由的链接将我重定向回根域(
domain.com
),而不是导航到预期路由的预期行为,在浏览器的网络选项卡中,它导致了数据大小为0 B的304 HTTP响应。
临时解决方案:
我发现暂时解决这个问题的唯一方法是停止并删除当前的PM2进程,然后重新运行npm run build
和npm run start
。
1条答案
按热度按时间zed5wv101#
修改代码:
通过上述修改,我注意到这个问题似乎得到了解决。我的假设是,这个问题可能与缓存问题或内存泄漏有关,特别是对于
next Image
。这可能会导致系统充满并随后出现故障。我很欣赏这方面的见解,如果我的假设是错的,请纠正我。