我正在学习如何配置Node.js App环境。为此,我正在使用config模块。
下面是我的index.js文件:
`
const config=require('config');
const express=require('express');
const app=express();
app.use(express.json()); //BUILT-IN EXPRESS MIDDLEWARE-FUNCTION
//CONFIGURATION
console.log('Current Working Environment:',process.env.NODE_ENV);
console.log('Name is:', config.get('name'));
console.log('Server is:', config.get('mail.host'));
console.log('Password is:', config.get('mail.password'));
`
我通过Power Shell命令NODE_ENV
将production
设置为$env:NODE_ENV="production"
。
我的config文件夹中的production.json文件是:
`{
"name":"My Productoin Environmet",
"mail":{
"host": "Prod-Environment"
}
}`
custom-environment-variables.json文件为:
`{
"mail":{
"passwrod":"app_password"
}
}`
我通过Power Shell命令app_password
将12345678
设置为$env:app_password="12345678"
config.get()
应该查看各种资源来查找此配置,包括json文件,配置文件以及环境变量。但是,每当我运行我的应用程序时,都会出现以下错误:
`throw new Error('Configuration property "' + property + '" is not defined'); Error: Configuration property "mail.password" is not defined`
如果我删除行:console.log('Password is:', config.get('mail.password'));
,一切都会顺利进行。请指导我怎么解决?
答案 0 :(得分:0)
我遇到了同样的问题,因为我没有定义用于存储邮件服务器密码的环境变量。因此,我的建议是使用以下命令行(mac)定义用于存储密码的环境变量,然后您的代码应该可以工作。
export app_password = / *您要设置的密码* /
how to define an environment variable for storing the password of the mail server.
答案 1 :(得分:0)
在command_prompt中定义环境变量时,不要在'='符号的两侧放置空格.....
例如:
set app_password = 123456 -----> is wrong way
set app_password=123456 -----> will work
答案 2 :(得分:0)
99% 的问题出在 config 文件夹中的文件名中,用于存储您的自定义变量