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

在Cypress.io中传递baseUrl参数:如何用变量引用baseUrl?

解决方案

你遇到的问题是执行cd切换目录后,npm的环境变量$npm_package_prodStageUrl未被正确解析,shell直接将其作为字符串传递给Cypress,导致URL格式无效。以下是几种可行的解决方法:

方法1:提前缓存环境变量

修改package.json中的脚本,在切换目录前把变量存入本地shell变量,避免切换后丢失:

"prodStageUrl": "https://[name of my app].io/",
"scripts": {
  "cy:prod:smoke": "BASE_URL=$npm_package_prodStageUrl && cd ./apps/myApp && cypress run --spec './cypress/e2e/smoke/*.cy.ts' --config baseUrl=$BASE_URL"
}

方法2:用cross-env跨平台处理环境变量

如果需要兼容Windows、Linux/macOS等多系统,先安装cross-env依赖:

npm install cross-env --save-dev

再修改脚本,用cross-env定义变量并包裹后续命令:

"prodStageUrl": "https://[name of my app].io/",
"scripts": {
  "cy:prod:smoke": "cross-env BASE_URL=$npm_package_prodStageUrl sh -c 'cd ./apps/myApp && cypress run --spec ./cypress/e2e/smoke/*.cy.ts --config baseUrl=$BASE_URL'"
}

方法3:在Cypress配置文件中直接读取变量

更简洁的方式是在Cypress配置文件(如cypress.config.ts或cypress.config.js)中直接读取npm环境变量,无需在命令行传递参数:

// cypress.config.ts
import { defineConfig } from 'cypress';

export default defineConfig({
  e2e: {
    baseUrl: process.env.npm_package_prodStageUrl,
    // 其他E2E配置项
  }
});

之后简化package.json中的脚本:

"prodStageUrl": "https://[name of my app].io/",
"scripts": {
  "cy:prod:smoke": "cd ./apps/myApp && cypress run --spec './cypress/e2e/smoke/*.cy.ts'"
}

内容的提问来源于stack exchange,提问作者Jan and RESTless

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:56:02