Vercel部署报错Module Not Found但本地正常,是否为构建缓存问题?
问题根因
- 你直接在package.json中引入GitHub仓库作为依赖,大部分前端包的GitHub仓库默认不会提交构建后的dist产物,包配置的main字段指向的文件在仓库中不存在,导致安装后无法被webpack识别
- 你配置了postinstall为
lerna bootstrap,Vercel的默认依赖安装逻辑可能和本地的lerna依赖管理逻辑不一致,出现依赖未正确安装到对应目录的问题 - 仅用
vercel --force只能清除单次cli触发部署的缓存,绑定git自动触发的部署仍会复用之前的全局构建缓存
解决方案
按优先级从高到低尝试:
- 清除Vercel全局构建缓存
登录Vercel控制台进入对应项目,找到「部署」tab右上角的「更多」按钮,选择「清除构建缓存」后重新触发部署,该操作会清空所有历史构建缓存,强制重新拉取所有依赖。 - 修正fork包的入口配置
进入你fork的react-headroom仓库,检查package.json中的main字段:
- 如果指向的是
dist/react-headroom.js这类构建产物路径,你需要在本地运行该包的构建命令(通常是npm run build),将生成的dist目录提交到你的GitHub仓库 - 也可以直接把
main字段修改为指向源码入口,比如src/index.js,跳过构建步骤
- 修改Vercel安装命令
在Vercel项目设置的「构建与开发设置」中,将「安装命令」修改为npm install --force,强制跳过缓存校验重新安装所有依赖。 - 兜底方案:直接引入源码
将fork后的react-headroom源码完整复制到你项目的src/lib/react-headroom目录下,把代码中所有import Headroom from 'react-headroom'的语句修改为相对路径导入,完全绕过npm依赖安装环节,不会再出现模块找不到的问题。
内容的提问来源于stack exchange,提问作者Eduardo Oliveira
相关产品推荐
相关产品推荐

