【问题标题】:Heroku NODE_ENV is always "development" despite setting config var to "staging" (NestJS app)尽管将 config var 设置为“staging”(NestJS 应用程序),Heroku NODE_ENV 始终是“开发”
【发布时间】:2021-10-07 10:58:50
【问题描述】:

在我部署 NestJS 应用程序的 Heroku 环境中,我通过 Heroku UI 设置所有配置变量。我已使用 Heroku UI 将我的 NODE_ENV 配置变量设置为 staging。我什至运行过这个命令heroku config:set NODE_ENV=staging -a <my-staging-environment。当我运行heroku config -a <my-staging-environment> 时,我看到NODE_ENV 设置为staging,但无论出于何种原因,当我从我的代码中控制台记录这个变量时,它会输出development。下面是一些示例代码,它在我的 TypeOrm 配置中将 development 记录为 NODE_ENV 的值。这导致ssl 属性没有设置为正确的值,因此我无法连接到我的 Heroku Postgres 数据库。我只打算将其设置为 development 用于本地开发目的。

require('dotenv').config();

console.log(process.env.NODE_ENV); // outputs "development" - idk where this value is coming from
console.log(process.env.DATABASE_URL); // outputs the correct value that I set in Heroku Config Vars

const typeOrmConfig: TypeOrmModuleOptions = {
  type: 'postgres',
  url: process.env.DATABASE_URL,
  ssl: process.env.NODE_ENV !== 'development' ? { rejectUnauthorized: false } : false, // ternary evaluates to the wrong value
  // ... other config options
};

我使用dotenv,并确保.gitignore 我的.env 文件。我不记得曾经将此变量设置为development。我在代码中看到它设置为NODE_ENV=development 的唯一位置是在我的.env-example 文件中。我确实将此文件提交到源代码管理,但它只是一个示例文件,而不是真正的 .env 文件,它实际上不应该被使用。

有人知道为什么会这样吗?

【问题讨论】:

    标签: heroku config nestjs typeorm dotenv


    【解决方案1】:

    我发现这不是 Heroku 的问题。相反,这是一个 NestJS/Nx 问题。

    见: process.env.NODE_ENV always 'development' when building nestjs app with nrwl nx

    【讨论】:

    • 恭喜!既然您已经解决了问题,您可以将此答案设置为已接受的答案。谢谢!
    猜你喜欢
    • 2021-11-27
    • 1970-01-01
    • 2020-07-09
    • 2021-03-02
    • 2018-06-04
    • 1970-01-01
    • 2017-06-13
    • 2019-07-10
    • 2013-09-19
    相关资源
    最近更新 更多