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

EC2实例中Node.js用dotenv时baseUrl不符合环境预期的问题

问题排查方案

1. 检查dotenv加载时机是否滞后于constant.ts的导入

如果你的constant.ts在dotenv.config()执行前就被导入,那么constant里的判断会基于初始的process.env.NODE_ENV(可能是undefined或开发环境默认值),后续dotenv加载的production值不会影响已经计算完成的baseUrlBE。

错误顺序示例:

// 先导入constant,再加载dotenv
import { baseUrlBE } from './constant';
import dotenv from 'dotenv';
dotenv.config();

正确顺序示例:

// 先加载dotenv,再导入constant
import dotenv from 'dotenv';
dotenv.config();
import { baseUrlBE } from './constant';

2. 确认constant.ts的判断逻辑是否存在语法错误

仔细检查判断代码,比如是否写错变量名、用赋值符号替代比较符号:

错误示例:

// 误用=赋值而非===比较
export const baseUrlBE = process.env.NODE_ENV = 'production' 
  ? 'http://mySite:8000/' 
  : 'http://localhost:8000';

正确示例:

export const baseUrlBE = process.env.NODE_ENV === 'production' 
  ? 'http://mySite:8000/' 
  : 'http://localhost:8000';

3. 检查.env文件是否存在格式问题

确认.env文件里的变量没有多余空格,比如NODE_ENV= production(等号后带空格)会导致process.env.NODE_ENV的值为' production'(带空格),和'production'严格比较不相等。

4. 验证dotenv是否加载了正确的.env文件

如果你的.env文件不在项目根目录,需要手动指定路径,否则dotenv会加载默认位置的文件(可能不是你EC2实例上的目标文件):

dotenv.config({ path: '/home/ec2-user/your-project/.env' });

5. 检查TypeScript编译后的代码一致性

如果是编译TypeScript后部署,直接查看编译生成的constant.js文件,确认判断逻辑是否和TS源码一致,避免编译过程中出现逻辑篡改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:23:09