Error Screenshot [我正在使用Node.js,并且已经设置了环境变量vidly_jwtPrivateKey。并尝试使用此命令config.get('vidly_jwtPrivateKey')使用配置包检索它,但我一直收到此错误:
抛出新的错误(“配置属性“'+属性+'”不是 定义');错误:配置属性“ vidly_jwtPrivateKey”不是 定义,
我已经搜寻了几个小时,请您提出解决方案。
这是我的default.json文件包含的内容:
{
"jwtPrivateKey" : ""
}
和custom-environment-variables.json包含:
{
"jwtPrivateKey" : "vidly_jwtPrivateKey"
}
并且我已经通过在终端中导出vidly_jwtPrivateKey来设置(我使用Mac):
export vidly_jwtPrivateKey=mySecureKey.
我已经尝试过了,但是没有用:
以下是我用来检索环境变量的代码:
if (!config.get('vidly_jwtPrivateKey')){
console.error('FATAL ERROR : jwtPrivateKey is not defined '),
process.exit(1);
};
非常感谢
答案 0 :(得分:2)
我遇到了同样的问题,这是因为Visual Studio和Visual Studio代码中集成了终端,看来除非您在Admin模式下运行编辑器,否则他们似乎无法访问任何这些变量。这个问题,您只需要以Amin模式启动编辑器
P.S:我在答案上看到的是不正确的,因为如果将其更改为
,实际上您不再从环境变量中读取它。config.get('jwtPrivateKey')
我知道此代码与哪个教程有关。所以应该是
config.get('vidly_jwtPrivateKey')
您应该改为在ADMIN模式下运行编辑器
答案 1 :(得分:0)
您尝试通过以下方式获取值而不是键名:
config.get('vidly_jwtPrivateKey')
应该是
config.get('jwtPrivateKey')
答案 2 :(得分:0)
我遇到了同样的问题,并且试图调试它持续了数小时。我认为,您应该完全转向使用dotenv NPM软件包。 当存储任何类型的秘密时,这是一种轻巧且更好的解决方案。 您只需要使用
require('dotenv').config()
或通过在CLI中键入
node -r dotenv/config your_script.js
两个工作都很棒。
然后,只需将令牌保存为.env文件为
RANDOM_SECRET_TOKEN = someRandomSecretIDon'tcareAbout
您可以使用任何您想用作秘密的东西
最后,在整个环境中使用[p>
process.env.RANDOM_SECRET_TOKEN
在这种情况下,它的使用是这样的:
jwt.sign({_id : this._id}, process.env.RANDOM_ACCESS_TOKEN)
相信我,使用config仅在更改环境时更改某些变量的配置才有意义(例如,开发=>测试=>生产)。 对于存储秘密,dotenv软件包更容易,更好
答案 3 :(得分:0)
我遇到了同样的问题,根据配置包https://www.npmjs.com/package/config的官方文档,您应该使用config.has()
来测试是否定义了配置值。 config.get()
会为未定义的键引发异常,以帮助捕获错别字和遗漏
const config = require('config');
//...
if(!config.has('jwtPrivateKey')){
console.error('FATAL ERROR: jwtPrivateKey is not defined');
process.exit(1);
}
答案 4 :(得分:0)
{
"jwtPrivateKey" : "vidly_jwtPrivateKey"
}
if (!config.get('vidly_jwtPrivateKey')) {
// use config.get('jwtPrivateKey')
};
在您的代码中,尝试对值而不是键调用 get
。