使用本地私有依赖包的Gatsby站点部署到Vercel时依赖找不到的解决方法
Gatsby 私有本地依赖包Vercel部署报错解决方案
问题场景
使用未公开发布的本地私有依赖包的Gatsby站点,本地构建正常,部署到Vercel时提示找不到对应依赖包。
依赖包存放于项目根目录的Gatsby static文件夹下,最初的package.json配置如下:
"devDependencies": { "fslightbox-react": "file:./public/fslightbox-react-pro-1.4.2.tgz", }, "scripts": { "install-plugin": "cd public && yarn add fslightbox-react-pro-1.4.2.tgz", "build": "yarn install-plugin && gatsby build", },
部署时已将Vercel构建命令覆盖为yarn build,但始终触发以下报错:
error "./public/fslightbox-react-pro-1.4.2.tgz": Tarball is not in network and can not be located in cache (["/vercel/path0/public/fslightbox-react-pro-1.4.2.tgz","/vercel/.cache/yarn/v6/npm-fslightbox-react-1.4.2-aa6c77ceb2feb8487853163cb9a3d3a3d91ca85f/node_modules/fslightbox-react/.yarn-tarball.tgz"])
报错核心原因为:Gatsby的public目录是构建过程中生成的,执行依赖安装时public目录还未创建,自然无法读取目录内的依赖包。
解决方法
无需修改Vercel的命令覆盖配置,仅调整package.json中的脚本配置即可,修改后配置如下:
"install-plugin": "cd static && yarn add file:static/fslightbox-react-pro-1.4.2.tgz", "build": "yarn install-plugin && gatsby build",
注意事项
- 私有依赖包必须存放在项目根目录的static文件夹下,该目录内容在项目初始化阶段就存在,无需等待构建生成。
内容的提问来源于stack exchange,提问作者Martin Conde
相关产品推荐
相关产品推荐

