NodeJS 无法使用config.get()读取节点中的自定义环境变量

a0zr77ik  于 2023-05-22  发布在  Node.js
关注(0)|答案(4)|浏览(302)

我使用config library来管理节点应用程序中的配置文件。
我已经通过export app_password=12345在终端中导出了我的自定义env变量
并通过以下方式将其Map到custom-environment-variable.json文件

{
  "mail": {
  "password": "app_password"
   }
}

当我在index.js文件(根模块)中使用config.get('mail.password')时。
我得到了error: Configuration property "mail.password" is not defined,详细信息如下:

/Users/tzhong/Documents/vidly- 
backend/node_modules/config/lib/config.js:203
throw new Error('Configuration property "' + property + '" is not 
defined');
^

Error: Configuration property "mail.password" is not defined
    at Config.get (/Users/tzhong/Documents/vidly- 
 backend/node_modules/config/lib/config.js:203:11)

我使用console.log(process.env.app_password)来检查我的自定义env变量是否存在,并在终端中显示app_password。

Vidly evn is : Vidly backend -- development
 Vidly mail server is : dev-mail-server
 Mail-password is : 12345
 NODE_ENV is : undefined
 app: development
 Mongan enabled...
 Listenning 3000 port ...

我想使用console.log(config.get('mail.password'));来显示我的自定义变量在终端而不是console.log(process.env.app_password)任何建议?
最后解决问题:这是一个小错误,在配置库中,创建自定义环境变量的文件名是严格的,文件的名称应该是'custom-environment-variables.json',我在'environment'上拼写错误,毕竟,感谢人们提供其他可用的包

pbgvytdp

pbgvytdp1#

将文件名重命名为“custom-environment-variables.json”,并使用复数“variables”。

avkwfej4

avkwfej42#

nodejs中正确的方法是使用.env文件。在根目录下创建.env文件。将env变量及其值保存为key=value,例如password=app_password
在主入口点文件中,Require dotenv包,并在require所有模块之后加载env变量,并在顶部添加dotenv.configure()。有关详细信息,请参见here

dxxyhpgq

dxxyhpgq3#

VS代码终端出现问题。它不拾取文件或对象。尝试外部节点终端。会成功的

zy1mlcev

zy1mlcev4#

使用**.env代替config。只需输入npm install --保存dotenv**即可添加

password=some value

您可以通过以下方式访问此文件

require("dotenv").config();

console.log(`Password is ${process.env.password}.`);
//Output
Password is *some value*

相关问题