使用 github workflow 的 actions/setup-node 工作流,安装 pnpm 失败的 bug

使用 github workflow 的 actions/setup-node 工作流,安装 pnpm 失败的 bug

在 github workflow 中,我们经常用 actions/setup-nodepnpm/action-setup 这两个工作流,来完成流水线安装 node 环境,并准备包管理器的需求。

我的工作流写法如下:

yaml 复制代码
jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: 检出分支
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 安装pnpm
        uses: pnpm/action-setup@v4
        with:
          run_install: true

      - name: 安装node
        uses: actions/setup-node@v4
        with:
          node-version: 22.14.0
          cache: "pnpm"

这段写法产生了以下故障,这里只截取一小部分:

log 复制代码
/home/runner/setup-pnpm/node_modules/.bin/pnpm store path --silent
/home/runner/setup-pnpm/node_modules/.bin/store/v10
Error: Dependencies lock file is not found in /home/runner/work/*** . Supported file patterns: pnpm-lock.yaml

问题起因

因为 actions/setup-node 工作流会默认检索项目内已经存在的包依赖锁文件,所以在查询包锁文件时,找不到就报错了。

如图所示:

具体缘由见以下文档所述:

按照官网文档,我应该提交 pnpm-lock.yaml 锁文件。

个人开发习惯导致必须另辟蹊径

由于我的开发习惯,是不上传任何包锁文件的。我不喜欢上传巨大的,频繁变更的,自动生成的文件到 git 仓库,所以在工作流场景下,自然是无法提供任何包锁文件的。

类似的情况还有在 vercel 流水线部署项目时,vercel 会根据是否存在包锁文件来决定包管理器的版本号。比如我的项目在根目录内不提供任何 pnpm-lock.yamlvercel 就使用了低版本的 pnpm6,而不是我在 packageManager 内配置的最新版 pnpm。不提供 pnpm-lock.yaml 锁文件确实容易给流水线环境带来误导。

但是我的场景下,肯定不能提交锁文件。在使用 taze 实现高强度依赖升级的情况下,依赖锁文件会频繁更新,其提交到仓库的意义不大。

临时性解决方案

在设置 pnpm 缓存前,先安装依赖,生成 pnpm-lock.yaml ,避免 actions/setup-node 出现识别故障。

更新后的工作流文件如下:

yaml 复制代码
jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: 检出分支
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 安装pnpm
        uses: pnpm/action-setup@v4
        with:
          run_install: true

      - name: 安装依赖(尝试生成lockfile)
        run: pnpm install --frozen-lockfile

      - name: 安装node
        uses: actions/setup-node@v4
        with:
          node-version: 22.14.0
          cache: "pnpm"
相关推荐
一点一木7 小时前
🚀 2026 年 4 月 GitHub 十大热门项目排行榜 🔥
人工智能·github
宝桥南山10 小时前
AI - 在命令行中尝试一下ACP(Agent Client Protocol)通信
microsoft·微软·github·aigc·copilot
拾贰_C12 小时前
【Github | GitHub Copilot | 学生认证】 GitHub Copilot学生如何认证
github
旅之灵夫13 小时前
【GitHub项目推荐--OpenArm:开源7自由度仿人机械臂平台】
github
一乐小哥14 小时前
坚持迭代一个 Chrome 插件半年后,我的同事问我:"这不是 Chrome 自带的功能吗?"
chrome·github·ai编程
Smilezyl14 小时前
一个独立开发者,靠一份 markdown 驱动 Claude Code, 用 20 天跑通 9 个包的 monorepo 工程
前端·人工智能·github
峰向AI14 小时前
做小红书、画信息图、动漫图:这个skill太实用了
github
Cosolar14 小时前
封神级 TTS!VoxCPM2 凭连续表征,玩转多语言合成 + 创意音色 + 无损声纹克隆
人工智能·llm·github
码流怪侠14 小时前
【GitHub】andrej-karpathy-skills:让 AI 编程助手告别三大通病
人工智能·程序员·github
码流怪侠14 小时前
【GitHub】OpenClaw:开源个人AI助手的新标杆
人工智能·程序员·github