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

运行Cypress测试时,指定.env文件后测试未加载环境变量的原因?

问题原因及解决办法

原因分析

你当前的脚本配置里,dotenv -e .env.local.cypress -- 仅将环境变量注入到了start-server-and-test这个主进程中。而cy:run是由start-server-and-test启动的独立子进程,它不会自动继承主进程的环境变量上下文,所以测试代码无法加载到这些系统级变量。

解决办法

有两种常用的修复方式:

方式一:给cy:run单独配置dotenv

修改test:e2e:local脚本,让开发服务器和Cypress测试进程分别通过dotenv加载指定的环境变量文件:

"dev-server": "nodemon --delay 5ms -e ts,tsx --watch ./src -x ts-node --transpile-only ./src/server",
"cy:run": "cypress run",
"test:e2e:local": "start-server-and-test 'dotenv -e .env.local.cypress -- dev-server' http://localhost:3000 'dotenv -e .env.local.cypress -- cy:run'"

方式二:将环境变量注入到整个脚本的进程上下文

通过shell命令让整个脚本进程加载环境变量,这样子进程(dev-server和cy:run)都会自动继承:

"dev-server": "nodemon --delay 5ms -e ts,tsx --watch ./src -x ts-node --transpile-only ./src/server",
"cy:run": "cypress run",
"test:e2e:local": "dotenv -e .env.local.cypress -- sh -c 'start-server-and-test dev-server http://localhost:3000 cy:run'"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:58:23