구성을 어디에 배치합니까? -노드의 간단한 가이드.제이에스는

잭 예치

팔로우

2020 년 2 월 1 일·6 분 읽기

이 코딩 패턴을 따라 코드 저장소 품질을 향상 시키십시오!

박사:https://github.com/teamzerolabs/config-service-reference에서 코드 저장소를 확인하십시오.

대부분 그렇습니다. 프로그램이 원격 끝점을 연결하거나 호출하는 한 보안 자격 증명을 어딘가에서 가져와야 합니다.

이러한 자격 증명을 프로그램에 로드하는 방법에는 여러 가지가 있습니다:

이것은 깃허브 스타터 프로젝트에서 흔히 볼 수 있습니다.이 문제를 교육하고 줄일 수 있기를 바랍니다.

레벨 1:텍스트 파일 자체에 하드 코드-이것은 일반적으로 금요일에 발생,또는 사람들이 막 시작. 참조 리포지토리는 이 작업을 수행하는 대신 끌어올 수 있는 코드를 사용하는 데 도움이 됩니다.

레벨 2:프로세스에서로드.이 하드 코딩보다 더 나은,하지만 시간이 지남에 따라 환경 변수를 추적하기 어려운 조금 있습니다—연결이 발생하는 장소에서 개체 환경. 단일 파일로 이동하여 참조된 모든 환경 변수를 찾을 수 없기 때문입니다.

수준 3:단일 파일에서 모든 환경 구성을 로드합니다. 이렇게 하면 구성을 조회할 위치를 알 수 있고 잘못된 값이 제공된 경우 프로그램이 일찍 실패할 수 있습니다.

수준 4:구성 스크립트를 서비스로 전환-이렇게 하면 다른 흥미로운 작업을 수행할 수 있습니다.

시작하기 전에

  • 노드가 있습니다.런타임 준비(버전> 10)
  • 당신이하지 않은 경우 우편 배달부를 얻을-양자 택일로,당신은 브라우저를 사용하거나 응용 프로그램을 칠 컬 수 있습니다.
  • 체크 아웃https://github.com/teamzerolabs/config-service-reference로컬 공간으로.나는db-setup폴더에 도커 작성 파일을 포함 시켰습니다,당신은 거기에 가서docker-compose up -d을 실행하여 스핀 업 할 수 있습니다.

빠른 예제—데이터베이스에 저장된 책을 반환하는 최소 도서 서비스

3 좋은 책!

첫 번째 폴더node-starthere에는 두 개의 파일이 있습니다:

  • 메인.이 서버에서는localhost:3000/books
  • 모델/인덱스에서 요청을 처리하기 위해express서버를 설정합니다.그 결과,우리는 더 많은 정보를 얻을 수 있습니다.
  • yarn start을 실행하여 시작합니다.

데이터베이스 자격 증명이 현재 저장되는 방식을 볼 수 있습니다models/index.js :

여기에 하드 코딩되어 있지만 더 잘할 수 있습니다.

하드 코딩 데이터베이스 자격 증명의 단점

  • 그것은 안전하지 않습니다—공용 저장소를 체크 아웃하는 사람은 이제 데이터베이스 인스턴스가 공개 특히,그것은 지금 노출,너무 많이 알 수 있습니다.
  • 다른 환경에서 작업하기가 어렵습니다.

1 단계—환경 변수

환경 변수에 대한 자세한 내용은 여기를 참조하십시오. 그것의 요지는 다음과 같이 실행중인 프로그램에 값을 전달할 수 있다는 것입니다

이 방법은 적은 수의 구성이있는 경우 괜찮지 만 사용 첫 달에 살아남은 프로젝트는 더 많은 서비스와 통합되기 시작합니다. (최근 4 개월 프로젝트에는 40 개의 변수가 있습니다! 위의 원사 시작 문을 위해 그들을 입력 상상,너무 많이)입니다.

2 단계-사용하기 전에 로컬 개발을 위해 런타임에 환경 변수를로드합니다.

운 좋게도 변수를 반복해서 입력하는 것을 막을 패키지가 있습니다. ‘853’이라고 한다. 그리고 그 안에.env파일을 만듭니다:

DATABASE_URL=localhost
DATABASE_PORT=3306
DATABASE_USERNAME=root
DATABASE_PASSWORD=dIKnUfyfUPURi9irSplTOqGO4OtE0
DATABASE_NAME=configexample

그리고dotenv.config는 텍스트 파일의 변수를process.env로로드하므로yarn start에서 변수를 입력하는 것을 건너 뛸 수 있습니다!

단계#3—값을 구문 분석하고 누락 된 경우 일찍 종료하는 편의 방법

잘못 구성된 프로그램보다 더 위험한 유일한 방법은 몇 달 동안 실행되는 잘못 구성된 프로그램입니다.

.env파일을 만드는 것을 잊었거나 잘못된 값을 넣는 것을 잊었다면 가능한 한 빨리 알고 싶습니다. 불완전하거나 잘못된 구성으로 코드를 실행하면 문제 해결이 어려워집니다.

두 번째 폴더node-with-config-service을 보면 다음과 같은 유틸리티 메서드가 추가되어 변수를 구문 분석하는 데 사용되는 것을 볼 수 있습니다.

:

이제 환경 변수가 누락된 경우 프로그램이 오류로 일찍 종료되며 프로그램의 어느 곳에서나 존재하는 정적 구성 개체에 의존할 수 있습니다!

이 접근 방식에는 두 가지 확장이 더 있습니다. 둘 다 자식 저장소에 포함되어 있습니다. 우리는 미래의 타이프 스크립트+네스트 제 기사에서 이들을 다룰 것입니다!