Keep getting Error: Configuration property "vidly_jwtPrivateKey" is not defined

Keep getting Error: Configuration property "vidly_jwtPrivateKey" is not defined

Error Screenshot[我正在使用 Node.js 并且已经设置了环境变量 vidly_jwtPrivateKey。并尝试使用此命令 config.get('vidly_jwtPrivateKey') 使用配置包检索它,但我不断收到此错误:

throw new Error('Configuration property "' + property + '" is not defined'); Error: Configuration property "vidly_jwtPrivateKey" is not defined,

我已经搜索了好几个小时了,能否请您提出一个解决方案。

这是我的 default.json 文件包含的内容:

{
    "jwtPrivateKey" : ""
}

和自定义环境-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);
};

非常感谢

您正在尝试通过以下方式获取值而不是键名:

config.get('vidly_jwtPrivateKey')

应该是,

config.get('jwtPrivateKey')

我遇到了同样的问题,这是因为 visual studio 中的集成终端和 visual studio 代码似乎他们无法访问任何这些变量,除非你 运行 Admin 中的编辑器 mode.so 要解决这个问题你只需要 在 Amin 模式下启动你的编辑器

P.S:我在答案中看到的是不正确的,因为如果将其更改为

,实际上您不再从环境变量中读取它
config.get('jwtPrivateKey')

我知道这段代码与哪个教程相关。所以应该是

config.get('vidly_jwtPrivateKey')

您应该 运行 您的编辑器改为管理员模式

我遇到了同样的问题,并且一直在尝试调试它几个小时。在我看来,你应该完全切换到使用 dotenv NPM 包。 在存储任何类型的秘密时,它是一种轻量级且更好的解决方案。 您只需要使用

来要求它
require('dotenv').config()

或者在您的 CLI 中键入此内容

node -r dotenv/config your_script.js

两者都非常好用。

然后,只需将您的令牌保存在 .env 文件中作为

RANDOM_SECRET_TOKEN = someRandomSecretIDon'tcareAbout

你可以使用任何你想要的作为秘密

最后使用

在整个环境中将其引用到任何你想要的地方
process.env.RANDOM_SECRET_TOKEN

在这种情况下,它是在这个意义上使用的:

jwt.sign({_id : this._id}, process.env.RANDOM_ACCESS_TOKEN)

相信我,只有在您更改环境(例如开发 => 测试 => 生产)时更改某些变量的配置时,使用配置才有意义。 对于存储秘密,dotenv包更简单更好

我有同样的问题,根据配置包的官方文档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);
}
{
  "jwtPrivateKey" : "vidly_jwtPrivateKey"
}

if (!config.get('vidly_jwtPrivateKey')) {
  // use config.get('jwtPrivateKey')
};

在您的代码中,尝试对值而不是键调用 get