วิธี nodejs อ่านและเขียนไฟล์. env?
จะอ่านและเขียนไฟล์ 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 ...
ฉันจะบรรลุได้อย่างไร?
คำตอบ
เริ่มต้นด้วยการสร้างโครงการใหม่
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
ใช่ความคิดเห็นของคุณถูกลบ
คุณสามารถใช้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));
อะไรทำนองนี้:
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',
)