关于nestjs的环境变量配置

About Environment variable configuration of nestjs

在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}`,
    }),

我在本地测试的时候是可以的,但是当我构建它的时候,环境就不行了,所以我该怎么办,思考

我的package.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.WHATEVER 是什么,它只是从 ts 语法(所有类型)到 js 语法的翻译,可以由 node.

start:dev(映射到 nest start --watch)实际上是 运行 代码,使用 node 作为 JavaScript 引擎。

您可能想要

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

或者你可以修改Nest在新项目中提供的start:prod命令为NODE_ENV=prod node dist/main.js