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

如何向Jest CLI传递环境变量?测试脚本设置不生效问题

你这是踩了shell命令里一个很常见的小坑——原来的写法里,IMPORTANT_ENV_VAR=value_that_matters是作为位置参数传给my_test_script.sh脚本的,根本没进到Jest的运行环境里,难怪测试代码读不到它。下面给你几个实用的解决办法:

方法1:在脚本调用前全局设置环境变量

把环境变量放在脚本调用的最前面,这样整个脚本进程(包括它启动的Jest)都会自动继承这个环境变量:

IMPORTANT_ENV_VAR=value_that_matters ./my_test_script.sh ./node_modules/.bin/jest --useStderr ./__tests__/my.test.js

如果你的my_test_script.sh只是负责转发执行命令,那这样改完,测试里直接用process.env.IMPORTANT_ENV_VAR就能拿到值了。

方法2:在脚本内部显式导出环境变量

如果需要通过脚本参数传递环境变量的值,可以修改my_test_script.sh的逻辑,把参数转换成环境变量后再执行Jest:

#!/bin/bash
# 提取第一个参数作为环境变量值并导出
export IMPORTANT_ENV_VAR="$1"
# 移除第一个参数,剩下的就是Jest的命令和参数
shift
# 执行Jest命令
"$@"

调用脚本时就改成:

./my_test_script.sh value_that_matters ./node_modules/.bin/jest --useStderr ./__tests__/my.test.js
方法3:直接在Jest命令前绑定环境变量

如果脚本的核心逻辑就是运行Jest,也可以直接在脚本里的Jest命令前加上环境变量设置,这样Jest进程会直接获取到这个变量:

#!/bin/bash
# 脚本内部直接设置环境变量并启动Jest
IMPORTANT_ENV_VAR=value_that_matters ./node_modules/.bin/jest --useStderr ./__tests__/my.test.js

这种方式最直接,适合脚本逻辑简单的场景。

额外提示:跨平台场景用cross-env

如果你需要在Windows和Linux/macOS上都能顺畅运行这个脚本,可以用cross-env包来统一环境变量的设置方式:
先安装依赖:

npm install --save-dev cross-env

然后修改命令(不管是写在脚本里还是直接调用):

npx cross-env IMPORTANT_ENV_VAR=value_that_matters jest --useStderr ./__tests__/my.test.js

最后别忘了确认测试代码里是用process.env.IMPORTANT_ENV_VAR来读取变量的,拼写和大小写可别搞错了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:57:03