为了账号安全,请及时绑定邮箱和手机立即绑定

Nodejs如何读写.env文件?

Nodejs如何读写.env文件?

哔哔one 2023-11-12 15:27:44
如何读写env文件?原始文件:# I am a note ...key1=value1key2=value2   # I am a note ...我需要一个函数setEnv(key, value)。运行setEnv('key1', 'value2'),让它变成:# I am a note ...key1=value2key2=value2   # I am a note ...我怎样才能实现它?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

让我们从创建新项目开始。


mkdir folder_name

cd folder_name

npm init

然后在您的项目目录中安装“envfile”和“dotenv”。安装 envfile 的命令是


npm install envfile --save

同样安装dotenv


npm install dotenv --save

dotenv 包直接读取 .env 文件 envfile 包用于根据需要解析和字符串化文件。.env使用您的详细信息在项目目录中创建文件。


# I am a note ...

key1=value1


key2=value2

   # I am a note ...

创建一个新文件filename.js


之后,您可以使用以下代码来获取和设置环境变量。


const fs = require('fs');

require('dotenv').config()

const {

    parse,

    stringify

} = require('envfile');

const pathToenvFile = '.env';


/**

 * 

 * @param {string} key 

 * //Function to get value from env

 */

function getEnv(key) {

    console.log("Getting value of " + key);

    console.log(process.env[key]);

}

//Calling the function getEnv

getEnv("key1");



/**

 * 

 * @param {string} key 

 * @param {string} value 

 * //Function to set environment variables.

 */

function setEnv(key, value) {

    fs.readFile(pathToenvFile, 'utf8', function (err, data) {

        if (err) {

            return console.log(err);

        }

        var result = parse(data);

        result[key] = value;

        console.log(result);

        fs.writeFile(pathToenvFile, stringify(result), function (err) {

            if (err) {

                return console.log(err);

            }

            console.log("File Saved"); // Can be commented or deleted

        })


    });

}

//Calling the function setEnv

setEnv('key1', 'value2');

之后使用运行您的文件


node filename.js

您可以获得您想要的输出。


初始 .env 文件


# I am a note ...

key1=value1


key2=value2

   # I am a note ...

运行程序后


key1=value2

key2=value2

是的,你的评论被删除了。


查看完整回答
反对 回复 2023-11-12
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

const fs = require('fs');

const envfile = require('envfile');

const envPath = 'pathToEnvFile/.env';

let parsedFile = envfile.parseFileSync(envPath);

parsedFile.NEW_VAR = 'newVariableValue';

fs.writeFileSync(envPath, envfile.stringifySync(parsedFile));


查看完整回答
反对 回复 2023-11-12
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

像这样的:


function setEnv(envText, key, value) {

  if (!envText) {

    return;

  }

  const rp = new RegExp(`${key}=(.*?)\\s`);

  let result = envText.replace(rp, (m, $1) => {

    return m.replace($1, value);

  });

  if (!rp.test(result)) {

    result += `\n${key}=${value}`;

  }

  return result;

}


console.log(

  setEnv(

    `# I am a note ...

  key1=value1

  

  key2=value2

     # I am a note ...`,

    'key1',

    'value2',

  ),

);


但这不起作用:


setEnv(

    `# I am a note ...

  key1=value1

  

  key2=value2`,

    'key2',

    'value1',

  )

setEnv(

    `# I am a note ...

  key1key2=value1

  

  key2=value2`,

    'key2',

    '2222',

  )


查看完整回答
反对 回复 2023-11-12
  • 3 回答
  • 0 关注
  • 283 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信