【问题标题】:How to tell the difference between Heroku Config Variables vs .Env Variables如何区分 Heroku 配置变量与 .Env 变量之间的区别
【发布时间】:2018-10-23 15:48:59
【问题描述】:

我是一名原生 iOS Swift 开发人员,我曾对 Node.js 稍有涉足,所以这个过程对我来说有点陌生。

使用节点如果我想隐藏我的变量我首先将dotenv modulerequire 导入到我的app.js 文件中,设置.env 变量,将其添加到.gitignore 文件中,然后使用dotenv 模块来访问它们:

// on the cli
$ npm install dotenv --save
$ touch .env
$ touch .gitignore 

// in the .env file
MY_SECRET_KEY=12345
// finally add the .env file to the .gitignore filel

// in the app.js file
const dotenv = require('dotenv');
dotenv.load();

initializeSomethingWith(process.env.MY_SECRET_KEY)

在 Heroku 中,我使用以下方法将密钥设置为秘密:

$ heroku config:set MY_SECRET_KEY=123456789
$ git push heroku master

我使用以下命令访问 heroku 配置变量:

process.env.MY_SECRET_KEY

我的困惑在于,一旦我需要 dotenv module,它如何区分 .env 文件中的内容与我为 heroku 变量设置的内容之间的区别?

app.js 文件:

const dotenv = require('dotenv');
dotenv.load();

var isThisAHerokuKey = process.env.MY_SECRET_KEY // key is 123456789

var orIsThisADotEnvKey = process.env.MY_SECRET_KEY // key is 12345

initializeSomethingWith(process.env.MY_SECRET_KEY) // which key is this using?

当然常识会说只是不要将键命名为相同的名称。

【问题讨论】:

    标签: node.js heroku key


    【解决方案1】:

    在玩了一段时间之后,似乎如果我通过运行 npm start 在本地运行文件,它将使用 12345 的值,但如果在 Heroku 上远程使用它,它将使用 123456789 的值。

    const dotenv = require('dotenv');
    dotenv.load();
    
    // REMOTE VALUE
    var isThisAHerokuKey = process.env.MY_SECRET_KEY // key is 123456789
    
    // LOCAL VALUE
    var orIsThisADotEnvKey = process.env.MY_SECRET_KEY // key is 12345
    
    // DEPENDS ON WETHER USED LOCALLY or REMOTELY
    initializeSomethingWith(process.env.MY_SECRET_KEY)
    

    【讨论】:

      【解决方案2】:

      在 Heroku 上使用 node.js 中的环境变量的推荐方法不是在代码中显式地 require('dotenv')。 相反,像你一直在做的那样,使用heroku config:set 为你的 Heroku 应用程序设置你的环境变量。 在您的开发环境中,将您的本地环境变量放在您的 .env 文件中,但不要将 .env 添加到 git(即,将其放在您的 .gitignore 中)。 然后,使用heroku local 运行您的应用程序(基于您的Procfile)。 当heroku local 执行您的应用程序时,它会获取您在.env 中定义的环境变量,以便可以通过process.env.ENV_VAR_XYZ 在您的代码中引用它们。

      请参阅here 了解更多详情。

      【讨论】:

      • 如果您在本地或通过 IDE 运行/调试应用程序,我假设您不会使用 heroku local
      猜你喜欢
      • 1970-01-01
      • 2015-06-04
      • 2012-06-24
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多