如何在 Heroku 系统变量中设置主文件夹?

Posted

技术标签:

【中文标题】如何在 Heroku 系统变量中设置主文件夹?【英文标题】:How do I set home folder in Heroku system variable? 【发布时间】:2019-08-04 05:04:30 【问题描述】:

我正在 Heroku dyno 上部署一个 node.js 应用程序并使用 config module,这需要我使用 config 文件夹的位置定义一个系统变量 NODE_CONFIG_DIR

config 文件夹位于我项目的根目录中。

我尝试使用以下值定义系统变量NODE_CONFIG_DIR,均失败:

./config
~/config
app/config
~/app/config
./app/config
$HOME/config
$HOME/app/config

我不断收到此错误:

WARNING: No configurations found in configuration directory:app/config

(将app/config 替换为上述任意值)

我设法设置了一个系统变量,但它的值没有指向正确的位置。

在 Heroku 中使用系统变量时引用树根的正确方法是什么?

【问题讨论】:

假设您可以让库找到该目录,您打算如何使用配置文件填充它?您可能应该阅读有关 Heroku 的 ephemeral filesystem 及其方式 recommends handling configuration 的信息。 【参考方案1】:

基于文档 - 如果 config 文件夹位于应用程序的根目录中,您不应该指定 $NODE_CONFIG_DIR 环境变量。


来自节点配置documentation:

Node-config 读取 './config' 目录中正在运行的进程的配置文件,通常是应用程序根目录。这可以通过将$NODE_CONFIG_DIR 环境变量设置为包含配置文件的目录来覆盖。也可以从节点设置,在加载Node-config之前:

process.env["NODE_CONFIG_DIR"] = __dirname + "/configDir/";
const config = require("config");

$NODE_CONFIG_DIR 可以是根目录的完整路径,如果值以 ./../. 开头,则可以是进程的相对路径


您可以使用上面的代码从您的节点代码中设置它。

【讨论】:

【参考方案2】:

你很接近:/app 是正确的路径。您可以通过运行heroku run bash 来验证它。

【讨论】:

【参考方案3】:

这是我的错...

两个答案都是正确的,但没有解决我的问题。

问题是我的配置文件名使用了小写,而NODE_ENV 的值是大写的。

【讨论】:

以上是关于如何在 Heroku 系统变量中设置主文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中设置主屏幕的背景颜色?

除了id,如何在strapi中设置主键?

如何在 Swift for Realm 模型中设置主键

如何在 Material Design Components for Web 中设置主色和辅助色?

如何在不破坏“菜单”按钮默认行为的情况下在 tvOS 游戏中设置主菜单

如何在基于 MFC 对话框的应用程序中设置主对话框的大小