【问题标题】:Keep getting Error: Configuration property "vidly_jwtPrivateKey" is not defined不断出现错误:未定义配置属性“vidly_jwtPrivateKey”
【发布时间】:2021-01-17 07:13:40
【问题描述】:

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

throw new Error('配置属性“'+属性+'”不是 定义');错误:配置属性“vidly_jwtPrivateKey”不是 定义,

我一直在寻找几个小时,请你提出一个解决方案。

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

{
    "jwtPrivateKey" : ""
}

和 custom-environment-variables.json 包含:

{
    "jwtPrivateKey" : "vidly_jwtPrivateKey"
}

我已经通过在终端中导出它来设置 vidly_jwtPrivateKey(我使用的是 Mac):

export vidly_jwtPrivateKey=mySecureKey.

这个我试过了,还是不行:

Error: Configuration property "mongoURI" is not defined

这是我用来检索环境变量的代码:

if (!config.get('vidly_jwtPrivateKey')){
  console.error('FATAL ERROR : jwtPrivateKey is not defined '),
  process.exit(1);
};

非常感谢

【问题讨论】:

    标签: node.js express environment-variables config


    【解决方案1】:

    我遇到了同样的问题,这是因为 Visual Studio 和 Visual Studio 代码中的集成终端,除非您在管理模式下运行编辑器,否则它们似乎无法访问任何这些变量。所以解决这个问题你只需要在 Amin 模式下启动你的编辑器

    P.S:我在答案中看到的内容是不正确的,因为实际上,如果将环境变量更改为

    ,您就不会再从环境变量中读取它了
    config.get('jwtPrivateKey')
    

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

    config.get('vidly_jwtPrivateKey')
    

    您应该改为在 ADMIN 模式下运行编辑器

    【讨论】:

      【解决方案2】:

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

      config.get('vidly_jwtPrivateKey')
      

      应该是,

      config.get('jwtPrivateKey')
      

      【讨论】:

      • 哦,伙计。你是救生员。非常感谢:)
      • 如果对您有帮助,请随时接受答案,点击向下箭头下方的灰色勾号按钮。
      • 当然。它说等待 5 分钟
      【解决方案3】:

      我遇到了同样的问题,根据配置包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】:

        我遇到了同样的问题,并且在尝试调试它几个小时时被卡住了。在我看来,你应该完全改用 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)
        

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

        【讨论】:

          【解决方案5】:
          {
            "jwtPrivateKey" : "vidly_jwtPrivateKey"
          }
          
          if (!config.get('vidly_jwtPrivateKey')) {
            // use config.get('jwtPrivateKey')
          };
          

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

          【讨论】:

            猜你喜欢
            • 2022-06-15
            • 2023-04-01
            • 2017-09-28
            • 2020-02-12
            • 1970-01-01
            • 1970-01-01
            • 2016-09-24
            • 2022-07-06
            相关资源
            最近更新 更多