问题现象
- 网站部署后仍请求
nav.com域名,而非预期的api.qdgithub.com - 构建后出现 500 Internal Server Error
- 浏览器请求错误的 API 地址
根本原因
- 环境变量覆盖问题 :
.env.local文件覆盖了.env.production中的 API 地址配置 - 构建工具冲突:Turbopack 和 Webpack 缓存冲突
- 组件导入错误 :在
app/layout.js中错误导入了<Html>组件(只能在pages/_document.js中使用)
解决方案
-
清理环境变量
- 删除或修改
d:\nav\nav_ui\.env.local文件,确保生产构建使用正确的环境变量
- 删除或修改
-
清理构建缓存
bash# 停止服务 # 在宝塔面板中停止 Node 项目 # 清理缓存 rm -rf /www/wwwroot/nav.qdgithub.com/.next rm -rf /www/wwwroot/nav.qdgithub.com/node_modules/.cache # 重新构建 cd /www/wwwroot/nav.qdgithub.com npm run build # 启动服务 # 在宝塔面板中启动 Node 项目 -
修复组件导入
- 检查并修复
app/layout.js中的<Html>组件导入问题 - 确保
<Html>组件只在pages/_document.js中使用
- 检查并修复
-
验证修复结果
- 检查构建是否成功:
ls -la /www/wwwroot/nav.qdgithub.com/.next/ - 测试本地服务:
curl -s http://127.0.0.1:3000 - 浏览器访问验证:
https://nav.qdgithub.com
- 检查构建是否成功:
预防措施
- 环境变量管理 :生产环境构建前确保
.env.local文件不存在或配置正确 - 构建缓存:每次部署前清理构建缓存,避免工具冲突
- 代码规范 :遵循 Next.js 组件使用规范,特别是
<Html>等特殊组件 - 部署流程:建立标准化的部署流程,包括缓存清理和环境检查步骤
技术要点
- Next.js 环境变量加载优先级 :
.env.local>.env.production>.env - 构建工具兼容性:Turbopack 和 Webpack 缓存可能冲突,需要定期清理
- 组件使用规范 :特殊组件如
<Html>有严格的使用范围限制 - Nginx 配置:确保反向代理配置正确,避免缓存导致的旧文件加载
通过以上步骤,成功解决了网站部署后请求错误域名的问题,并修复了 500 Internal Server Error,确保网站正常运行。