vercel构建时提示pnpm install错误
vercel构建时提示pnpm install错误
在vercel构建项目时,提示pnpm install失败
错误信息
ERR_PNPM_OUTDATED_LOCKFILE Cannot install with "frozen-lockfile" because pnpm-lock.yaml is not up to date with package.json
Note that in CI environments this setting is true by default. If you still need to run install in such cases, use "pnpm install --no-frozen-lockfile"
Failure reason:
specifiers in the lockfile ({"@vuepress/bundler-vite":"2.0.0-rc.9","@waline/client":"^3.2.2","vue":"^3.4.27","vuepress":"2.0.0-rc.9","vuepress-plugin-search-pro":"2.0.0-rc.43","vuepress-theme-hope":"2.0.0-rc.43"}) don't match specs in package.json ({"@vuepress/bundler-vite":"2.0.0-rc.9","@waline/client":"^3.2.2","vue":"^3.4.27","vuepress":"2.0.0-rc.9","vuepress-plugin-search-pro":"^2.0.0-rc.43","vuepress-theme-hope":"2.0.0-rc.43"})
Error: Command "pnpm install" exited with 1
这个错误信息指出,在使用 pnpm install 时,启用了 frozen-lockfile 选项,但 pnpm-lock.yaml 文件中的依赖项版本与 package.json 文件中的版本不匹配。具体来说,是因为 pnpm-lock.yaml 文件中记录的依赖项版本和 package.json 中指定的依赖项版本不一致。
frozen-lockfile 选项要求 pnpm-lock.yaml 文件中的依赖项版本和 package.json 文件中的版本完全匹配,否则安装过程会失败。在 CI 环境中,frozen-lockfile 通常默认启用,以确保依赖项版本的确定性和一致性。
解决方法
- 更新 pnpm-lock.yaml 文件
pnpm install --no-frozen-lockfile
- 或者,删除 pnpm-lock.yaml 文件,重新安装依赖
rm -rf pnpm-lock.yaml
pnpm install
- 确保依赖项版本一致
手动检查 package.json 文件和 pnpm-lock.yaml 文件,确保两者中的依赖项版本一致。
例如:
在 package.json 中,vuepress-plugin-search-pro 的版本是 "^2.0.0-rc.43"。 在 pnpm-lock.yaml 中,确保 vuepress-plugin-search-pro 的版本也是 "^2.0.0-rc.43"。 如果 package.json 文件中的版本号需要变动,请更新 package.json,然后再次运行 pnpm install --no-frozen-lockfile。
- 在 CI 环境中使用
--no-frozen-lockfile
如果在 CI 环境中需要运行 pnpm install 而不更新锁定文件,可以添加 --no-frozen-lockfile 选项:
pnpm install --no-frozen-lockfile
小结
推荐的解决方法是使用第一种方法,即运行 pnpm install --no-frozen-lockfile 更新 pnpm-lock.yaml 文件,以确保它与 package.json 文件中的依赖项版本保持一致。这样可以避免在 CI 环境中出现类似的问题,并确保依赖项版本的一致性和确定性。