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

Node.js项目app.js无法访问dotenv加载的config环境变量

问题根因

核心问题是代码执行顺序错误:Node.js的CommonJS模块加载是同步执行逻辑,你当前server.js中先执行const app = require('./app')导入app模块,之后才调用dotenv.config()加载环境变量。当app.js内的代码运行时,自定义环境变量还没被注入到process.env对象中,自然无法读取到配置。

另外你提到的VS Code输入process.env.时看不到自定义变量的自动补全,是因为编辑器默认仅能识别Node.js内置、系统级的环境变量,不会主动解析项目内的env配置文件生成补全提示,不属于运行时错误。

修复步骤

1. 调整环境变量加载顺序

将dotenv.config()的调用移动到所有业务模块导入语句的最顶部,保证环境变量在所有业务代码执行前完成加载,修改后的server.js代码如下:

// 第一行就加载环境变量配置
const dotenv = require('dotenv');
dotenv.config({ path: './config.env' });

// 环境变量注入完成后,再导入app等其他业务模块
const app = require('./app');

// 后续业务逻辑
console.log(process.env);

调整后重启服务,app.js中即可正常读取process.env.NODE_ENV、process.env.PORT等自定义配置项。

2. 配置VS Code环境变量自动补全

在项目根目录新建env.d.ts类型声明文件,写入如下内容,即可让VS Code识别你自定义的环境变量,给出精准的补全提示:

declare namespace NodeJS {
  interface ProcessEnv {
    NODE_ENV: 'development' | 'production' | 'test';
    PORT: string;
    UZERNAME: string;
    PASSWORD: string;
  }
}
注意事项
  • 启动服务前确认config.env文件的相对路径和dotenv.config中配置的路径一致,避免路径错误导致环境变量加载失败;如果遇到路径解析问题,可以改用绝对路径写法:dotenv.config({ path: require('path').resolve(__dirname, 'config.env') }),适配不同执行目录的场景
  • 包含数据库密码、接口密钥等敏感信息的env配置文件不要提交到代码仓库,记得在.gitignore中添加对应文件名忽略提交

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:39:41