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

Azure Pipeline执行Cypress测试时npm ci命令报错求助

Azure Pipeline执行Cypress自动化测试时npm ci命令失败

问题场景

在Azure Pipeline中运行Cypress自动化测试,执行npm ci --prefer-offline命令时失败,返回npm命令用法说明,说明该命令不被当前环境识别。

现有Pipeline YAML配置

# 配置Azure CI触发器可参考官方说明
jobs:
  - job: Cypress_tests
    pool:
      vmImage: 'ubuntu-22.04'
    # 并行运行测试
    strategy:
      parallel: 2
    steps:
      - task: NodeTool@0
      # 使用npm锁文件作为缓存键缓存依赖
      - task: CacheBeta@1
        inputs:
          key: npm | package-lock.json
          path: /home/vsts/.npm
          restoreKeys: npm | package-lock.json
      - task: CacheBeta@1
        inputs:
          key: cy | package-lock.json
          path: /home/vsts/.cache/Cypress
          restoreKeys: cy | package-lock.json
      - script: npm ci --prefer-offline
      # 启动E2E测试用的Web服务器 - 替换为你自己的服务器启动命令
      - script: npm start &
      - script: npx wait-on 'http-get://localhost:3000' # 等待服务器启动完成
      # 并行运行测试并记录到Cypress Cloud
      - script: npx cypress run --record --parallel --ci-build-id $BUILD_BUILDNUMBER
        # 要实现录制和并行功能,需在Azure DevOps的管道变量中设置CYPRESS_RECORD_KEY
        env:
          CYPRESS_RECORD_KEY: $(CYPRESS_RECORD_KEY)

错误信息

Starting: CmdLine
==============================================================================
任务         : 命令行
描述         : 在Linux和macOS上使用Bash,在Windows上使用cmd.exe运行命令行脚本
版本         : 2.212.0
作者         : 微软公司
帮助         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
==============================================================================
生成脚本。
脚本内容:
npm ci --prefer-offline
========================== 开始命令输出 ===========================
/usr/bin/bash --noprofile --norc /home/vsts/work/_temp/82c8b231-ced2-40c3-9bca-ec69d4282405.sh

用法: npm <命令>

其中<命令>可以是以下之一:
    access, adduser, bin, bugs, c, cache, completion, config,
    ddp, dedupe, deprecate, dist-tag, docs, edit, explore, get,
    help, help-search, i, init, install, install-test, it, link,
    list, ln, login, logout, ls, outdated, owner, pack, ping,
    prefix, prune, publish, rb, rebuild, repo, restart, root,
    run, run-script, s, se, search, set, shrinkwrap, star,
    stars, start, stop, t, tag, team, test, tst, un, uninstall,
    unpublish, unstar, up, update, v, version, view, whoami

npm <命令> -h     获取该命令的快速帮助
npm -l           显示完整用法信息
npm help <术语>  搜索该术语的帮助信息
npm help npm     查看详细概述

在ini格式的文件中指定配置:

问题原因

npm ci命令是npm 5.7.1版本才引入的功能。你的Pipeline中使用了NodeTool@0任务但未指定要安装的Node.js版本,导致环境使用Ubuntu 22.04默认的旧版本Node/npm,不支持npm ci命令,因此执行时返回命令用法说明。

解决方法

修改NodeTool@0任务,指定一个支持npm ci的Node.js版本(比如16.x、18.x或20.x,根据项目需求选择),示例如下:

- task: NodeTool@0
  inputs:
    versionSpec: '18.x' # 可根据项目需求替换为16.x/20.x等

将上述配置替换原YAML中的- task: NodeTool@0行,重新运行Pipeline即可。

另外,可额外添加一步验证Node和npm版本的命令,确保环境配置正确:

- script: |
    node --version
    npm --version

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:05:23