关于nestjs的环境变量配置

关于nestjs的环境变量配置,nestjs,nestjs-config,Nestjs,Nestjs Config,在app.module.ts文件中,我使用了环境变量 imports: [ ConfigModule.forRoot({ envFilePath: [`./src/config/${process.env.NODE_ENV}.env`], isGlobal: true },), MongooseModule.forRoot(process.env.DATABASE_URL, { useNewUrlParser: true, user: `${proce

在app.module.ts文件中,我使用了环境变量

  imports: [
    ConfigModule.forRoot({ envFilePath: [`./src/config/${process.env.NODE_ENV}.env`], isGlobal: true },),
    MongooseModule.forRoot(process.env.DATABASE_URL, {
      useNewUrlParser: true,
      user: `${process.env.DATABASE_USER}`,
      pass: `${process.env.DATABASE_PASSWD}`,
    }),
当我在本地测试时,它是工作的,但是当我构建它时,env是不工作的,所以我能做什么呢

mypackage.json脚本

"build": "NODE_ENV=prod nest build", // the env not work
"start:dev": "NODE_ENV=dev nest start --watch",  // it works

build
因此,
nest build
不运行代码,它运行编译器将
ts
文件转换为
js
文件,因此从不检查或评估
process.env。无论是什么,它只是从
ts
语法(所有类型)转换而来的to
js
可由
node
解释的语法

start:dev
(映射到
neststart--watch
)是实际运行代码的部分,使用
节点
作为JavaScript引擎

你可能想要像这样的东西

"start:dev:prod": "NODE_ENV=prod nest start --watch"

或者您可以将嵌套在新项目中提供的
start:prod
命令修改为
NODE\u ENV=prod NODE dist/main.js

我想您的意思是
“start:prod”
而不是
“start:dev:prod”
。否,我的意思是制作一个新脚本
start:dev:prod
以映射到
NODE_ENV=prod nest start--watch
,因为nest项目已经有了一个
start:prod
,就像我在回答的后半部分提到的那样。这个新脚本将允许使用
NODE\u ENV