关于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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...