部署Next.js应用后白屏但状态在线无报错,求调试方法
问题:Next.js部署后出现白屏(服务状态正常无报错)
我是一名新手,将Next.js应用部署到服务器后出现白屏,但服务状态正常,且未发现任何报错日志。已将应用重新部署到一台全新服务器,相关信息如下:
应用启动日志(out.log)
0|sixam-ma | 0|sixam-ma | > sixam-mart@0.1.0 start 0|sixam-ma | > next start -p 3002 0|sixam-ma | 0|sixam-ma | 0|sixam-ma | > sixam-mart@0.1.0 start 0|sixam-ma | > next start -p 3002 0|sixam-ma | 0|sixam-ma | 0|sixam-ma | > sixam-mart@0.1.0 start 0|sixam-ma | > next start -p 3002 0|sixam-ma | 0|sixam-ma | ready - started server on 0.0.0.0:3002, url: http://localhost:3002 0|sixam-ma | info - Loaded env from /home/..../public/.env.production 0|sixam-ma | { lanDirection: 'ltr' }
PM2服务状态
────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ sixam-mart │ default │ 0.39.3 │ fork │ 62363 │ 7m │ 0 │ online │ 0% │ 58.6mb │ ubuntu │ disabled │ └────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────
Nginx反向代理配置
location / { proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_cache_bypass $http_upgrade; proxy_set_header Host $host; proxy_pass http://localhost:3002/; proxy_redirect http://localhost:3002/ https://$server_name/; }
排查步骤
- 直接访问服务器3002端口:在服务器本地执行
curl http://localhost:3002,或者在本地通过服务器IP:3002访问(确保防火墙开放3002端口),验证Next.js服务本身是否能返回正常内容,排除Nginx代理问题。 - 检查浏览器控制台:打开白屏页面后按F12,查看Console标签是否有JS报错,Network标签是否有资源加载失败(如404、500状态)。
- 确认构建过程:检查部署时
next build命令的输出,确保生产构建无错误或关键警告,比如依赖缺失、代码语法问题。 - 验证环境变量:确认
.env.production中的变量配置正确,比如API地址、密钥等,避免因变量错误导致页面渲染失败。 - 优化Nginx配置:删除重复的
proxy_set_header Host $host;语句;如果使用HTTPS,确认SSL证书配置正常,无证书过期或不匹配问题。 - 查看详细日志:启动Next.js时增加日志级别,执行
next start -p 3002 -v;同时检查服务器系统日志(如/var/log/syslog),排查是否有底层错误。 - 检查静态资源:确认服务器上的
.next目录(或静态导出的out目录)完整,文件权限正确,确保Node进程能读取这些资源。
内容的提问来源于stack exchange,提问作者Rajiv Sarkar
相关产品推荐
相关产品推荐

