heroku - 尽管将 config var 设置为“staging”(NestJS 应用程序),Heroku NODE_ENV 始终是“开发”
问题描述
在我部署 NestJS 应用程序的 Heroku 环境中,我通过 Heroku UI 设置了所有的 Config Vars。我已将我的NODE_ENV
配置变量设置为staging
使用 Heroku UI。我什至运行过这个命令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 的问题。相反,这是一个 NestJS/Nx 问题。
推荐阅读
- azure-devops - 在 VSTS 中设置用户组变量?
- c++ - 如何将 libjvm.so 的路径传递给 bazel 构建?
- xml - 从一个 XSLT 输出两个不同的 XML 根元素/结构
- android - 将图像添加到 PDF、Android Studio
- format - MigraDoc 格式化
- angular - 直接在浏览器中将 URL 写入定义的路由器路由时出现 404
- python - Kivy 修复“片段着色器未读取顶点着色器‘frag_color’的输出”消息
- mysql - 基于值的数据透视表和聚合
- jspdf - jsPDF fromHTML 图像(到大)和页边距底部(不工作)
- android - paddingBottom 尺寸是多少?