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

GitHub Actions CI运行时报错env-cmd: not found的问题求助

问题根因

你上传的工件仅包含build目录,而env-cmd这类npm依赖存储在node_modules目录下,并未被包含在上传的工件中。同时测试任务中你设置了install: false跳过了依赖安装流程,且你在start命令中临时安装的env-cmd为局部依赖,在start脚本的子shell执行上下文里无法识别到局部依赖的bin路径,最终抛出找不到命令的错误。

解决方案

你可以根据自身需求选择以下任意一种方案修复:

方案1:调整依赖安装逻辑(最稳妥)

  • 移除测试任务中cypress action的install: false配置,让action自动执行依赖安装,所有项目依赖包括env-cmd都会正常安装到当前任务的运行环境中
  • 删除start命令中临时添加的npm install env-cmd语句,避免重复安装浪费执行时间

修改后的cypress action配置参考:

- name: "UI Tests - Chrome"
  uses: cypress-io/github-action@v2
  with:
    start: npm run start
    wait-on: "http://localhost:3000"
    wait-on-timeout: 120
    browser: chrome
    record: false
    parallel: true
    group: "UI - Chrome"
    spec: cypress/tests/ui/*
    command: npm run e2e
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

方案2:同步node_modules目录减少重复安装耗时

如果你需要保留install: false来优化执行速度,可以将依赖目录也作为工件同步到测试任务:

  1. 修改install任务的上传工件配置,同时上传node_modules目录:
- name: Save build and dependencies
  uses: actions/upload-artifact@v2
  with:
    name: build-and-deps
    if-no-files-found: error
    path: |
      build
      node_modules
  1. 修改测试任务的下载工件配置,对应调整工件名称即可。

方案3:全局安装env-cmd临时修复

如果不想改动现有安装逻辑,可以把临时安装的env-cmd改为全局安装,修改start命令如下:

start: |
  npm install -g env-cmd
  npm run start

全局安装的依赖可在任意shell上下文被识别,直接解决命令找不到的问题。

另外你工作流配置中存在一个空的- name:步骤,建议直接删除避免不必要的警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:39:03