nextjs部署更新,Turbopack 和 Webpack 缓存冲突问题解决

问题现象

  1. 网站部署后仍请求 nav.com 域名,而非预期的 api.qdgithub.com
  2. 构建后出现 500 Internal Server Error
  3. 浏览器请求错误的 API 地址

根本原因

  1. 环境变量覆盖问题.env.local 文件覆盖了 .env.production 中的 API 地址配置
  2. 构建工具冲突:Turbopack 和 Webpack 缓存冲突
  3. 组件导入错误 :在 app/layout.js 中错误导入了 <Html> 组件(只能在 pages/_document.js 中使用)

解决方案

  1. 清理环境变量

    • 删除或修改 d:\nav\nav_ui\.env.local 文件,确保生产构建使用正确的环境变量
  2. 清理构建缓存

    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 项目
  3. 修复组件导入

    • 检查并修复 app/layout.js 中的 <Html> 组件导入问题
    • 确保 <Html> 组件只在 pages/_document.js 中使用
  4. 验证修复结果

    • 检查构建是否成功:ls -la /www/wwwroot/nav.qdgithub.com/.next/
    • 测试本地服务:curl -s http://127.0.0.1:3000
    • 浏览器访问验证:https://nav.qdgithub.com

预防措施

  1. 环境变量管理 :生产环境构建前确保 .env.local 文件不存在或配置正确
  2. 构建缓存:每次部署前清理构建缓存,避免工具冲突
  3. 代码规范 :遵循 Next.js 组件使用规范,特别是 <Html> 等特殊组件
  4. 部署流程:建立标准化的部署流程,包括缓存清理和环境检查步骤

技术要点

  • Next.js 环境变量加载优先级.env.local > .env.production > .env
  • 构建工具兼容性:Turbopack 和 Webpack 缓存可能冲突,需要定期清理
  • 组件使用规范 :特殊组件如 <Html> 有严格的使用范围限制
  • Nginx 配置:确保反向代理配置正确,避免缓存导致的旧文件加载

通过以上步骤,成功解决了网站部署后请求错误域名的问题,并修复了 500 Internal Server Error,确保网站正常运行。

相关推荐
Qlittleboy2 小时前
TP5.0的“请求缓存”,把页面缓存为静态HTML文件,提升加载速度
前端·缓存·html·php
Lution Young2 小时前
缓存命中率
缓存
Doris8932 小时前
【Node.js 】Node.js 与 Webpack 模块化工程化入门指南
前端·webpack·node.js
霖霖总总2 小时前
[Redis小技巧21]从 Binlog 到缓存:Canal + Redis 同步架构全解
redis·缓存
傻啦嘿哟2 小时前
Python操作Redis:高效缓存设计与实战
redis·python·缓存
LSL666_2 小时前
Redis值数据类型——sorted set
数据库·redis·缓存·数据类型
云姜.2 小时前
Redis 缓存穿透/缓存雪崩/缓存击穿问题
redis·缓存·bootstrap
菜菜小狗的学习笔记2 小时前
黑马程序员Redis--基础篇
数据库·redis·缓存
JohnsonXin2 小时前
一次线上白屏排查:静态 import 是如何悄悄破坏 Webpack 共享 Chunk 的
前端·webpack·node.js