3

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

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 中使用系统变量时,引用树根的正确方法是什么?

4

3 回答 3

1

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

于 2019-03-13T15:57:09.533 回答
1

基于文档 - 如果config文件夹位于应用程序的根目录中,则不需要指定$NODE_CONFIG_DIRenv 变量。


从节点配置文档

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

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

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


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

于 2019-03-13T14:44:22.343 回答
0

是我的错...

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

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

于 2019-03-29T14:55:12.597 回答