You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js项目本地运行正常,Vercel部署build报Cannot read property 'hash' of null错误

错误分析

09:53:00.125 TypeError: Cannot read property 'hash' of null
09:53:00.125 at callback (/vercel/path0/node_modules/next/dist/compiled/webpack/bundle5.js:59190:46)
...
09:53:00.155 Error: Command "npm run build" exited with 1

该报错属于Next.js生产构建阶段的Webpack编译错误,本地npm run dev正常但构建失败的核心原因是:

  • 开发模式为增量编译,对代码异常的容错阈值更高,很多导入、语法类的问题不会直接阻断运行;而npm run build是全量生产构建,会执行严格的静态扫描、服务端渲染预编译校验,存在异常就会直接抛出错误。
  • 结合你本次的改动,问题出在新增的Layout组件关联逻辑上,大概率是组件导出导入异常、或者组件内部存在仅在生产构建阶段才会触发的兼容问题。
解决方案
  • 第一步先本地复现问题:不要用npm run dev测试,直接在本地执行npm run build,就能复现和Vercel一致的报错,方便定位问题点。
  • 检查Layout组件的导出配置:确认../components/Layout文件末尾的导出语句是正确的export default Layout,不要写错组件名、不要漏写导出。
  • 检查Layout内部引用的NavBar、Footer组件:确认两个组件的导入路径完全正确,且两个组件都有正常导出;同时检查组件内部是否直接调用了window、document等浏览器专属API,如果有需要用useEffect包裹,或者增加typeof window !== 'undefined'的判断,避免服务端预编译时调用浏览器API报错。
  • 清除缓存重新构建:如果以上检查都没有问题,删除本地的.next文件夹、node_modules文件夹、锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml),重新安装依赖后再执行npm run build测试。
  • Vercel端缓存清理:如果本地构建已经正常,Vercel部署仍然报错,在Vercel项目设置的「Build & Development Settings」中开启跳过构建缓存的选项,重新触发部署即可。

内容的提问来源于stack exchange,提问作者Tris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:24:05