我有一个使用服务器端渲染的 nextjs 14 项目,我在服务器组件中添加了 console.log 和 Winston 记录器,并且在运行 npm run build 时都会显示这两个日志。 但是,当我运行 npm run build 时,日志会出来,但是当我运行 npm run start 时,不会显示日志。似乎日志只出现在开发模式和构建时间。
我的 Linux 服务器也是如此,在我使用 nginx 和 pm2 部署项目后,我在 pm2 日志中看不到我的控制台日志,并且 Winston 日志未写入文件中。
请帮忙解决这个问题,并让我知道为什么日志没有在生产运行时显示。
您可能正在使用静态渲染而不是动态渲染。您可以使用以下选项将服务器组件声明为动态:
使用
cookies()
或 headers()
。在服务器组件中使用这些将在请求时选择整个路由进行动态渲染。
在服务器组件页面中使用
searchParams
属性将在请求时选择整个路由进行动态渲染。
根据所需的范围,在布局或页面组件内提供具有值 force-dynamic
的
路线段配置。
请记住,在应用程序路由器内部,您的服务器组件仅在默认情况下在构建时呈现并保存为静态 html,而不是像在页面路由器内部使用 getServerSideProps 时那样根据请求进行编译。