Как вообще обновить существующую переменную среды в файл .env? - PullRequest
0 голосов
/ 13 апреля 2019

Я использую dotenv для загрузки переменных env и использую его в мох-тесте. Но на основе функции, которая генерирует новое значение токена для одной из существующих сред var, я хочу иметь возможность в общем случае обновить его значение в файле .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 () генерирует новое значение токена, которое я анализирую, т.е. authToken; что я хочу в общем случае обновить в файле .env для AUTH_TOKEN var вместо его предыдущего значения. Можно ли написать / обновить в .env для его обновленного значения через какую-то библиотеку? Я новичок в nodejs и использую пакеты npm, любая помощь приветствуется.

1 Ответ

0 голосов
/ 13 апреля 2019

Вот подход, который, возможно, может решить, что вы пытаетесь сделать:

const fs = require('fs');
const envItems = ['BASE_URI', 'C_KEY', 'AUTH_TOKEN' ];
function updateEnv(items){
    var envContents = [];
    items.forEach((item) => {
        envContents.push(item + '=' + process.env[item])  
    })
    fs.writeFileSync('.env', items.join('\n'));
}

В той части, где вы устанавливаете свой auth_token, вы обновите переменную среды и файл .env:

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