You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pnpm工作区时GitHub Actions中Node.js包二进制文件缺失

问题原因与排查方案

以下是GitHub Actions中出现deploy-script not found错误的常见原因及解决方法:

1. PNPM工作区的bin目录未加入系统PATH

本地环境中PNPM会自动将工作区内部包的bin路径注入终端PATH,但GitHub Actions默认环境可能未配置这一点,导致直接调用deploy-script时系统找不到可执行文件路径。

解决方法:

  • 在调用命令前手动添加PNPM的bin路径到PATH:
    export PATH="$PNPM_HOME:$PATH"
    
  • 或在GitHub Actions的workflow中通过设置环境变量持久化配置:
    jobs:
      deploy:
        steps:
          - name: Setup PNPM
            uses: pnpm/action-setup@v2
            with:
              version: 8
          - name: Add PNPM bin to PATH
            run: echo "$PNPM_HOME" >> $GITHUB_PATH
    

2. 本地包未正确链接或安装

GitHub Actions执行pnpm install时,可能因lockfile状态、缓存或参数问题,导致deploy-script包未被正确链接到工作区依赖中。

解决方法:

  • 确保pnpm install未使用--ignore-workspace类参数,保留工作区包的链接逻辑。
  • 检查turbo.json的缓存配置,避免缓存跳过deploy-script的安装/链接步骤。
  • 可在deploy命令前手动执行完整安装:
    pnpm install && pnpm run deploy
    

3. deploy-script的构建步骤缺失或顺序错误

本地已构建.dist/main.js,但GitHub Actions工作流中可能未执行deploy-script的构建命令,或构建步骤晚于website的deploy命令执行。

解决方法:

  • 在turbo.json中配置任务依赖,确保构建先完成:
    {
      "pipeline": {
        "deploy-script#build": {},
        "website#deploy": {
          "dependsOn": ["deploy-script#build"]
        }
      }
    }
    
  • 在GitHub Actions中显式执行deploy-script的构建命令:
    pnpm run --filter deploy-script build
    

4. 二进制文件的权限或路径配置问题

  • 检查.dist/main.js是否有可执行权限,在CI环境中可手动添加:
    chmod +x ./tools/deploy-script/.dist/main.js
    
  • 确认deploy-script的package.json中bin字段路径正确,需相对于包根目录:
    {
      "bin": {
        "deploy-script": ".dist/main.js"
      }
    }
    

5. Shebang兼容性问题

虽然已添加shebang,但GitHub Actions的Ubuntu环境中Node.js路径可能与本地不同。确保shebang使用通用格式#!/usr/bin/env node,而非固定路径(如#!/usr/local/bin/node),后者可能在CI环境中不存在。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:02:56