วิธี nodejs อ่านและเขียนไฟล์. env?

Dec 11 2020

จะอ่านและเขียนไฟล์ env ได้อย่างไร?

ไฟล์ต้นฉบับ:

# I am a note ...
key1=value1

key2=value2
   # I am a note ...

setEnv(key, value)ฉันต้องการฟังก์ชั่น

วิ่งsetEnv('key1', 'value2'), ให้มันกลายเป็น:

# I am a note ...
key1=value2

key2=value2
   # I am a note ...

ฉันจะบรรลุได้อย่างไร?

คำตอบ

2 GribeshDhakal Dec 11 2020 at 21:24

เริ่มต้นด้วยการสร้างโครงการใหม่

mkdir folder_name
cd folder_name
npm init

จากนั้นในไดเรกทอรีโครงการของคุณให้ติดตั้ง 'envfile' และ 'dotenv' คำสั่งสำหรับการติดตั้ง envfile คือ

npm install envfile --save

ติดตั้ง dotenv ในทำนองเดียวกัน

npm install dotenv --save

package dotenv โดยตรงอ่าน. env file package envfile ใช้เพื่อแยกวิเคราะห์และสตริงไฟล์ตามต้องการ สร้าง.envไฟล์ในไดเร็กทอรีโปรเจ็กต์พร้อมรายละเอียดของคุณ

# I am a note ...
key1=value1

key2=value2
   # I am a note ...

สร้างไฟล์ใหม่ด้วย filename.js

หลังจากนั้นสำหรับการรับและตั้งค่าตัวแปร env คุณสามารถใช้รหัสต่อไปนี้

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

ใช่ความคิดเห็นของคุณถูกลบ

1 plc-dev Dec 11 2020 at 20:05

คุณสามารถใช้envfileโมดูลตามที่อธิบายไว้ที่นี่

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));
ebyte Dec 11 2020 at 20:17

อะไรทำนองนี้:

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',
  )