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

如何在Nx Workspace的Express项目中获取环境配置

在NX Workspace中获取环境变量的正确方法

方法一:使用NX自带的Environment文件导入

NX的environment.ts/environment.prod.ts是编译时静态替换的配置文件,不能通过process.env直接访问,需要通过模块导入的方式使用:

  1. 确保环境文件结构正确:
    src/environments/environment.ts(开发环境):

    export const environment = {
      production: false,
      MONGO_URL: 'mongodb://localhost:27017/dev-db'
    };
    

    src/environments/environment.prod.ts(生产环境):

    export const environment = {
      production: true,
      MONGO_URL: 'mongodb://prod-host:27017/prod-db'
    };
    
  2. 在代码中导入并使用:
    直接导入对应路径,或者利用NX的路径映射(通常在tsconfig.base.json中配置了@your-workspace-name/environments,替换成你的工作区名称即可):

    import { environment } from '@your-workspace-name/environments';
    
    // 直接访问MONGO_URL
    console.log(environment.MONGO_URL);
    

    执行nx build --configuration=production时,NX会自动替换为environment.prod.ts的内容,开发环境默认使用environment.ts。

方法二:使用.env文件配合process.env

如果你习惯用process.env访问变量,可以通过NX的环境变量加载机制实现:

  1. 创建环境对应的.env文件:
    项目根目录下创建.env.development和.env.production:

    # .env.development
    MONGO_URL=mongodb://localhost:27017/dev-db
    
    # .env.production
    MONGO_URL=mongodb://prod-host:27017/prod-db
    
  2. 配置项目的project.json:
    在目标执行器(比如build或serve)中指定envFile:

    {
      "targets": {
        "serve": {
          "executor": "@nx/js:node",
          "options": {
            "buildTarget": "your-project:build",
            "envFile": ".env.development"
          },
          "configurations": {
            "production": {
              "envFile": ".env.production"
            }
          }
        },
        "build": {
          "executor": "@nx/js:tsc",
          "options": {
            // ...其他构建配置
            "envFile": ".env.development"
          },
          "configurations": {
            "production": {
              "envFile": ".env.production"
            }
          }
        }
      }
    }
    
  3. 配置TypeScript类型(可选):
    避免TypeScript报错,在项目根目录的typings.d.ts中添加:

    declare namespace NodeJS {
      interface ProcessEnv {
        MONGO_URL: string;
      }
    }
    
  4. 在代码中使用:

    console.log(process.env.MONGO_URL);
    

为什么之前process.env.MONGO_URL返回undefined?

NX的environment.ts文件是编译时注入的静态配置,不属于Node.js的process.env环境变量体系,所以直接用process.env访问不到。只有通过.env文件配合NX的envFile配置,才能让变量被注入到process.env中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:20:27