关于pnpm处理Git托管包及GitHub Actions中pnpm 9安装报错的技术问询
pnpm 9在GitHub Actions中安装Git托管包时的警告与问题排查
Hey there! Let's walk through what's going on in your GitHub Actions log and figure out how to handle it.
First, let's look at the logs you shared:
...2028_bdafe4b9f3a3a25bf8a949127ee2568c npm-install: npm warn deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported ...2028_bdafe4b9f3a3a25bf8a949127ee2568c npm-install: npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. Progress: resolved 1904, reused 0, downloaded 1800, added 1792 ...2028_bdafe4b9f3a3a25bf8a949127ee2568c npm-install: > @codemirror/autocomplete@6.12.0 prepare ...2028_bdafe4b9f3a3a25bf8a949127ee2568c npm-install: > cm-buildhelper src/index.ts Progress: resolved 1904, reused 0, downloaded 1902, added 1903 ...2028_bdafe4b9f3a3a25bf8a949127ee2568c npm-install: npm notice ...2028_bdafe4b9f3a3a25bf8a949127ee2568c npm-install: npm notice New minor version of npm available! 10...
先拆解日志里的关键信息:
- 废弃依赖警告:这些
npm warn deprecated提示不是pnpm 9的问题,而是你安装的某个依赖(或依赖的依赖)还在使用已经被废弃的glob@8.1.0和inflight@1.0.6包。这类警告大多不会影响当前功能,只是上游包需要更新依赖了。 - Prepare脚本执行:
@codemirror/autocomplete@6.12.0的prepare脚本在运行cm-buildhelper src/index.ts,这是npm/pnpm的正常行为——包在安装后会自动执行prepare脚本完成构建,从进度条来看,这个过程已经顺利推进了。 - 安装进度:日志显示
resolved 1904, downloaded 1902, added 1903,说明绝大多数包已经成功安装,看起来安装并没有完全失败,可能只是你看到警告误以为出问题了?
针对这些情况的处理建议:
- 确认安装是否真的失败:如果后续GitHub Actions步骤报错,先检查完整日志,看是不是安装后的步骤出问题,而非安装本身。如果只是这些警告,安装其实已经完成了。
- 处理废弃依赖警告:
- 可以在本地或Actions中运行
pnpm why glob@8.1.0和pnpm why inflight@1.0.6,找出是哪个包引入了这些废弃依赖,然后查看该包的最新版本是否已经修复了依赖问题,尝试升级它。 - 如果暂时无法升级,这些警告可以先忽略,不会阻断安装流程。
- 可以在本地或Actions中运行
- 优化GitHub Actions中的pnpm配置:
- 确保你用官方的
pnpm/action-setup来安装指定版本的pnpm,避免环境中npm和pnpm的冲突:- uses: pnpm/action-setup@v2 with: version: 9 - 配置pnpm缓存,加速安装同时避免潜在的缓存异常:
- uses: actions/cache@v3 with: path: | ~/.pnpm-store key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-
- 确保你用官方的
- 检查Node.js版本兼容性:有些包(比如codemirror相关)对Node.js版本有要求,确保GitHub Actions中使用的Node.js版本符合依赖包的要求,可以用
actions/setup-node指定版本:- uses: actions/setup-node@v4 with: node-version: 20 # 或符合你项目要求的版本 cache: 'pnpm'
如果还有更具体的报错(比如安装中断、后续步骤失败),可以补充完整日志,我们再进一步排查!
备注:内容来源于stack exchange,提问作者Dolphin




