【问题标题】:How to generically update an existing environment variable to .env file?如何将现有环境变量一般更新为 .env 文件?
【发布时间】:2019-09-03 18:11:39
【问题描述】:

我正在使用 dotenv 加载环境变量并在我的 mocha 测试中使用。但是基于为现有环境变量之一生成新令牌值的函数,我希望能够将其值一般更新为 .env 文件。有可能吗?

testSpec.js:

require('dotenv').config()
const webapi = require('../libs/webapi')

async function getVal() {
//to generate a new token using existing one
token = webapi.generate( process.env.BASE_URI, process.env.C_KEY, process.env.AUTH_TOKEN)
token.then(response => {
        obj = JSON.parse(response.body)
        authToken = obj.auth_token
})
}

.env :

BASE_URI= https://www.smthing.com
C_KEY=12456704-fedrfg1-7840-00002345
AUTH_TOKEN=75638391-9c5c-d690-4fd53456

从 testSpec.js generate() 生成我正在解析的新令牌值,即;授权令牌;我想在 AUTH_TOKEN var 的 .env 文件中进行一般更新,以代替其先前的值。是否可以通过某些库写入/更新到 .env 以获取其更新值?我是 nodejs 新手并使用 npm 包,任何帮助表示赞赏。

【问题讨论】:

  • 您似乎想更新 process.env 项目,然后将其写入您的 .env 文件。不过,不确定这是否是一种好习惯,因为我认为 .env 文件通常被认为是“设置一次并使用”

标签: javascript node.js npm environment-variables dotenv


【解决方案1】:

这是一种或许可以解决您正在尝试做的事情的方法:

    const fs = require('fs');
    const envItems = ['BASE_URI', 'C_KEY', 'AUTH_TOKEN'];
    function updateEnv(items = [], eol = '\n'){
      const envContents = items
        .map(item => `${item}=${process.env[item]}`)
        .join(eol)
      fs.writeFileSync('.env', envContents);
    }

在您设置 auth_token 的部分,您将更新环境变量和.env 文件:

process.env.AUTH_TOKEN = obj.auth_token;
updateEnv(envItems);

【讨论】:

    【解决方案2】:

    另一个答案很好,但它需要在 .env 中手动添加所有现有键,否则它们将在更新的文件中被删除。这是我的版本:

    updateEnv.js

    const dotenv = require('dotenv')
    const fs = require('fs')
    const env = fs.readFileSync('.env')
    const buf = Buffer.from(env)
    const currentConfig = dotenv.parse(buf)
    
    function updateEnv(config = {}, eol = '\n'){
      const envContents = Object.entries({...currentConfig, ...config})
        .map(([key,val]) => `${key}=${val}`)
        .join(eol)
      fs.writeFileSync('.env', envContents);
    }
    
    module.exports = updateEnv
    

    callingFile.js

      const updateEnv = require('./updateEnv.js')
    
      const envUpdate = {
        'API_KEY': 'abcdefg'
      }
    
      updateEnv(envUpdate)
    

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 2021-11-19
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2017-07-11
      相关资源
      最近更新 更多