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

如何在本地Nx Monorepo的NestJS代码中设置process.env.NODE_ENV为production?

Nx Monorepo下NestJS设置NODE_ENV为production无效的解决方案

排查方向及解决步骤

1. 解决跨平台环境变量写法问题

直接写NODE_ENV=production仅适用于Linux/macOS系统,Windows系统需要用set NODE_ENV=production。要适配所有系统,先安装cross-env包:

npm install cross-env --save-dev

然后修改package.json里的serve脚本:

"serve": "cross-env NODE_ENV=production nx serve your-nestjs-project-name"

2. 检查Nx项目的target配置

打开项目根目录的project.json,找到serve和build的target配置,确保production环境的变量设置正确:

  • 为serve的production配置添加env参数:
"serve": {
  "executor": "@nrwl/nest:serve",
  "configurations": {
    "production": {
      "buildTarget": "your-project:build:production",
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

运行时直接指定production配置:

nx serve your-nestjs-project-name --configuration=production

3. 调整代码中获取NODE_ENV的方式

不要在代码最顶部直接读取process.env.NODE_ENV,用NestJS的ConfigModule加载更可靠:

import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `.env.${process.env.NODE_ENV || 'development'}`,
    }),
  ],
})
export class AppModule {}

再通过ConfigService获取环境变量:

import { ConfigService } from '@nestjs/config';

constructor(private configService: ConfigService) {
  console.log('当前环境:', this.configService.get('NODE_ENV'));
}

4. 构建后运行需单独设置环境变量

如果是构建完成后运行dist目录下的文件,运行时也要指定NODE_ENV:

cross-env NODE_ENV=production node dist/apps/your-nestjs-project-name/main.js

5. 检查nx.json的全局配置

查看nx.json里的targetDefaults,如果有全局设置的NODE_ENV,会覆盖项目级配置,需删掉或修改:

"targetDefaults": {
  "serve": {
    // 移除或修改这里的全局env配置
    // "env": {
    //   "NODE_ENV": "development"
    // }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:57:23