on
Pro | Node.js와 같은 환경변수 사용
Pro | Node.js와 같은 환경변수 사용
반응형
도입
DB 사용자 이름, DB 암호, 이메일 암호, API 키 등 응용 프로그램에 저장했다가 나중에 사용하기 위해 검색해야 하는 상수 값이 많습니다. 이러한 값은 상황에 따라 달라질 수 있습니다. 개발자가 코드를 작성할 때 코드를 테스트해야 합니다. 테스트는 개발 환경에 반해야 합니다. 개발자는 프로덕션 DB 서버에 연결해서는 안 됩니다.
개발자는 보통 로컬 데이터베이스를 사용하여 개발 및 테스트를 수행하며 테스트 이메일을 보낼 때 개인 이메일 계정을 사용합니다. 운영 환경을 구축하기 전에 애플리케이션이 스테이징 환경으로 이동하여 스테이징 환경에 대해 품질 보증 팀의 테스트를 받는 경우가 있습니다. 마지막으로, 생산 환경에서는 모든 서비스가 생산이어야 합니다. 따라서 애플리케이션을 만드는 동안 둘 이상의 환경을 유지해야 합니다.
환경 변화 중에 달라지는 일정한 값을 저장하는 것은 편리하고 관례적이다. 응용 프로그램이 실행 중인 환경에 따라 이러한 값을 검색하도록 구성할 수 있습니다.
환경 변수
환경 변수는 애플리케이션 또는 시스템 수준에서 생성할 수 있습니다.
윈도우즈 및 리눅스와 같은 운영 체제는 고유한 환경 변수를 관리합니다. Node.js 응용 프로그램은 호스팅 시스템에서 이러한 값을 읽을 수 있습니다.
그러나 개발자가 파일에 로컬로 저장된 값을 대신 읽으려면(예: 구성 파일) 어떻게 해야 합니까? Node.js 응용 프로그램은 파일에 저장된 자체 환경 변수를 관리할 수도 있습니다(다른 대부분의 프로그래밍 언어에서는 구성 파일이라고 함). Node.js는 단독으로 로컬 환경 변수를 유지할 수 없습니다. 이것은 닷엔비라는 패키지를 사용해야 합니다.
패키지 dotenv는 NPM 명령을 사용하여 설치할 수 있으며 .env라는 파일에서 읽습니다.
프로그램 설정
전체 개념을 이해하기 위해 여러 환경에서 실행되는 node.js 서버를 생성하여 로컬 변수 유지보수를 위한 dotenv 노드 패키지의 사용법을 시연하고 서버에서 실행 중인 시스템 변수를 읽기 위해 서버에 구축하려고 합니다.
응용 프로그램 설정 단계:
패키지를 만드는 중입니다.json 파일
npm init -y
dotenv 설치 중
npm i -S dotenv
애플리케이션 상단에서 dotenv 구성 함수를 호출하는 중
require("dotenv").config();
응용 프로그램의 루트에 다음 내용을 포함하는 .env 파일 생성
process.env를 사용하여 값 액세스
const DB_HOST = process.env.DB_HOST; const DB_USER = process.env.DB_USER;
bellow 애플리케이션은 .env에서 값을 읽어 사용자에게 반환합니다.
헤로쿠에 배포
우리는 헤로쿠에 애플리케이션을 배치하고 시스템 변수에서 이러한 값을 읽는 방법을 설명하겠습니다.
헤로쿠에 애플리케이션을 배포하는 방법은 여러 가지가 있습니다. 우리는 github 방식을 사용할 것이에요.
요구 사항들
깃허브 계정
헤로쿠 계정
작업 시스템에 Git이 설치됨
배포 단계
github 계정을 생성하고 새 git 리포지토리를 생성합니다.
저장소의 이름은 우리의 경우 채워져야 합니다, env_demo입니다. 프로젝트가 비공개인 경우 비공개 옵션을 선택해야 합니다.
package.json을 변경해야 합니다.
엔진 추가 및 노드 버전 지정 - heroku가 앱의 노드를 설치하는 데 필요합니다.
시작 스크립트 노드 인덱스 추가, heroku는 node.js 앱에 대해 npm start를 실행합니다.
{ "name": "env_demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index", "test": "echo \"Error: no test specified\" && exit 1" }, "engines": { "node": "14.x" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "dotenv": "^10.0.0" } }
또한 index.js 파일에서 앱을 실행할 포트를 bellow로 지정해야 합니다. 헤로쿠가 요구하는 사항입니다. 포트를 지정해서는 안 됩니다.
http .createServer(function (req, res) { res.writeHead(200, { "Content-Type": "application/json" }); res.write(JSON.stringify(ENV_VARS)); res.end(); }) .listen(process.env.PORT);
프로젝트의 루트 디렉터리에 .gitignore라는 파일을 추가합니다. 우리는 github 서버에 업로드하면 안 되는 파일을 지정할 수 있습니다. .env는 권장되지 않는 node_modules 디렉토리와 개인 세부 정보를 포함하므로 추가하지 않습니다. heroku는 node_modules를 생성하고 필요한 npm 패키지를 가져옵니다.
기계의 프로젝트 디렉토리에 bellow 명령을 기록합니다.
git init git add . git commit -m "initial commit" git remote add origin https://github.com/bewarusman/env_demo.git git push origin master
heroku로 이동하여 계정을 만듭니다. 새 앱을 만듭니다.
배포 탭에서 Github에 연결을 선택합니다.
리포지토리를 찾아 연결을 선택한 다음 분기 배포를 클릭합니다. 배포가 완료되면 보기 버튼을 클릭하여 브라우저에서 앱을 확인합니다.
이제 앱이 열리고 빈 json 객체가 표시됩니다. 왜죠? 우리가 헤로쿠 생태계에 환경 변수를 지정하지 않았기 때문입니다.
변수 구성
설정 탭에서 구성 변수 표시를 클릭합니다.
여기에 변수를 추가합니다.
그리고 테스트...
결론
여러 환경 변수를 분리하는 응용 프로그램 개발에 매우 중요합니다. npm 패키지 dotenv를 사용하면 node.js 애플리케이션에서 여러 환경 변수를 쉽게 유지할 수 있습니다. .env라는 파일에서 읽습니다. .env 파일이 없는 동안 process.env는 시스템 환경 변수에서 읽기를 시도합니다.
from http://it-ground.tistory.com/340 by ccl(A) rewrite - 2021-10-28 07:26:58