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

如何通过Node.js CLI配置process.env环境变量及适配Jest?

问题解答

1. 实现通过Node.js CLI向process.env添加环境变量

Node.js本身不会自动解析--env这类自定义参数并注入到process.env,但可以通过手动解析命令行参数或借助第三方参数解析库实现需求。

方式一:手动解析命令行参数

直接处理process.argv数组,提取目标参数赋值给process.env:

// index.js
process.argv.forEach(arg => {
  // 用--env--作为环境变量参数的前缀
  if (arg.startsWith('--env--')) {
    const [key, value] = arg.slice(6).split('=');
    if (key && value !== undefined) {
      process.env[key] = value;
    }
  }
});

console.log('process.env["NEW_VARIABLE"]:', process.env["NEW_VARIABLE"]);

运行命令:

node index.js --env--NEW_VARIABLE=1

执行后会输出1。

方式二:使用第三方参数解析库(以minimist为例)

先安装依赖:

npm install minimist

编写脚本解析参数:

// index.js
const argv = require('minimist')(process.argv.slice(2));

// 将解析到的参数合并到process.env
Object.keys(argv).forEach(key => {
  if (key !== '_') {
    process.env[key] = String(argv[key]);
  }
});

console.log('process.env["NEW_VARIABLE"]:', process.env["NEW_VARIABLE"]);

运行命令:

node index.js --NEW_VARIABLE=1

2. 添加字符串类型的环境变量

完全可以,process.env中的值本质都是字符串类型,Node.js会自动将赋值内容转为字符串。比如设置带空格的字符串:

node index.js --env--APP_NAME="My Node.js App"

对应的测试脚本:

// index.js
process.argv.forEach(arg => {
  if (arg.startsWith('--env--')) {
    const [key, value] = arg.slice(6).split('=');
    process.env[key] = value;
  }
});

console.log('process.env["APP_NAME"]:', process.env["APP_NAME"]);
console.log('值的类型:', typeof process.env["APP_NAME"]); // 输出string

3. 在Jest脚本中实现

可以实现,常见三种方式:

方式一:通过Jest前置脚本设置

在jest.config.js中配置前置脚本:

module.exports = {
  setupFiles: ['./jest.setup.js'],
};

创建jest.setup.js直接赋值:

process.env.NEW_VARIABLE = '1';
process.env.APP_NAME = 'Test Application';

所有测试用例都会继承这些环境变量。

方式二:通过CLI传递环境变量给Jest

Jest会继承启动时的系统环境变量,直接在启动命令中传入:

# Linux/macOS
NEW_VARIABLE=1 APP_NAME="Test App" jest

# Windows cmd
set NEW_VARIABLE=1 && set APP_NAME=Test App && jest

在测试文件中直接访问:

// test.js
test('环境变量生效', () => {
  expect(process.env.NEW_VARIABLE).toBe('1');
  expect(process.env.APP_NAME).toBe('Test App');
});

方式三:在测试文件中手动解析参数

和Node.js脚本逻辑一致,在测试文件开头解析命令行参数并赋值:

// test.js
process.argv.forEach(arg => {
  if (arg.startsWith('--env--')) {
    const [key, value] = arg.slice(6).split('=');
    process.env[key] = value;
  }
});

test('自定义参数生效', () => {
  expect(process.env.TEST_VAR).toBe('hello');
});

运行命令:

jest test.js --env--TEST_VAR=hello

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:02:32