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

Node.js项目中如何让NPM脚本加载指定环境变量文件?

问题分析与解决方法

问题根源

dotenv 默认只会自动加载根目录下的 .env 文件,它不会识别 supervisor 的 --mode production 参数,也不会根据这个参数自动切换到 .env.production 文件。supervisor 的 --mode 参数是用于自身运行模式配置的,和 dotenv 的环境文件加载逻辑完全无关。

解决方法

这里提供三种可行的解决方式:

方式一:通过环境变量指定dotenv加载路径

直接在脚本中设置 DOTENV_CONFIG_PATH 环境变量,告诉dotenv要加载的目标文件:
修改 package.json 中的脚本配置:

"scripts": {
    "job_orders": "DOTENV_CONFIG_PATH=.env.production supervisor --mode production jobs/job_orders.js"
}

dotenv 会读取这个环境变量的值,加载对应的 .env.production 文件。

方式二:在代码中根据环境变量动态加载

先在脚本中设置 NODE_ENV 环境变量,再在代码里根据这个值判断加载哪个文件:

  1. 修改脚本:
"scripts": {
    "job_orders": "NODE_ENV=production supervisor --mode production jobs/job_orders.js"
}
  1. 替换代码中的 import 'dotenv/config' 为以下逻辑:
import dotenv from 'dotenv';
import path from 'path';

// 根据NODE_ENV确定要加载的环境文件路径
const envFilePath = process.env.NODE_ENV === 'production' 
  ? path.resolve(process.cwd(), '.env.production') 
  : path.resolve(process.cwd(), '.env');

dotenv.config({ path: envFilePath });

方式三:使用dotenv-cli工具(需额外安装)

先安装 dotenv-cli:

npm install dotenv-cli --save-dev

然后修改脚本,通过它指定要加载的环境文件:

"scripts": {
    "job_orders": "dotenv -e .env.production -- supervisor --mode production jobs/job_orders.js"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:42:33