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,确保网站正常运行。

相关推荐
智购科技无人售货机厂家10 小时前
2026自动售货机制冷系统维护指南:从散热器清洁到压缩机换油的工程实践~YH
运维·redis·物联网·缓存·架构
2601_9621284115 小时前
SpringBoot篇(缓存层)
java·spring boot·缓存
mmsy102416 小时前
缓存知识点总结
java·spring·缓存
garmin Chen18 小时前
redis面试题
java·数据库·redis·缓存
程序员夏洛1 天前
Redis 的 Red Lock 是什么?你了解吗?
数据库·redis·缓存
智购科技智能售货柜1 天前
2026自动售货机设备能耗计量系统:从功率监测到能效分析的工程实践~YH
数据库·人工智能·redis·缓存·架构·perl·symfony
潘正翔2 天前
Memcached构建缓存服务器
运维·服务器·数据库·缓存·云原生·memcached
Jul1en_2 天前
【Java 脚手架】封装通用工具类-3
java·开发语言·redis·缓存·ai·bootstrap·rabbitmq
李昊哲小课2 天前
Spring Boot 4 旅游主题实战教程 阶段四:缓存与底层进阶
spring boot·redis·缓存·性能优化·log4j·旅游·性能
杨运交2 天前
[065][缓存模块]Hibernate二级缓存自定义实现:基于Spring Cache的多级缓存适配器
spring·缓存·hibernate