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
패키지 dotenv는 .env 파일을 직접 읽습니다. 패키지 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',
)