我正在使用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进行一般更新,以代替其先前的值。是否可以通过某个lib将其更新值写入/更新到.env?我是nodejs的新手,并使用了npm软件包,感谢您的帮助。
答案 0 :(得分:0)
这是一种可以解决您要执行的操作的方法:
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);