Node Js의 비밀 및 환경 변수 관리

모든 코드 프로젝트는 비밀, 구성 및 환경별 변수를 유지 관리해야 합니다.

가장 흔한 비밀은,
  • 문자열과 암호를 연결하는 데이터베이스
  • 이메일 서비스 계정 및 비밀번호
  • 타사 서비스 API 키

  • 일반적인 환경 변수는,
  • 포트 번호
  • 애플리케이션 환경(예: NODE_ENV - 테스트, 개발, 생산)

  • 다음과 같은 기타 애플리케이션별 구성,
  • 기본 이메일 주소
  • 기능 토글 변수

  • 첫 번째 옵션은 코드 내에서 관리하는 것입니다. 그러나 원격 저장소(예: Github, GitLab 등)에 코드를 보관하면 잘 작동하지 않습니다.

    또한 다중 개발자 환경에서는 작동하지 않습니다. 모든 개발자는 코드에 하드 코딩할 수 없는 다른 구성을 사용합니다.

    이 문제는 시스템 환경 변수를 설정하여 프로덕션에서 수정할 수 있습니다. 이 변수는 애플리케이션에서 process.env를 통해 액세스할 수 있습니다.

    그러나 개발 중에는 컴퓨터에 많은 응용 프로그램이 있습니다. 대부분의 변수는 애플리케이션마다 동일합니다. 따라서 이 변수를 응용 프로그램별로 사용하는 방법을 찾아야 합니다.

    개발 과정에서 이 문제를 해결할 수 있는 멋진 패키지가 있습니다. dotenv라고 합니다.
    dotenv는 애플리케이션 코드 내에서 환경 변수 및 구성을 관리하는 데 도움이 됩니다.

    설치하자dotenv,

    npm install dotenv
    


    프로젝트의 루트에 .env 파일을 만듭니다.

    /*
      file: .env
    */
    
    API_BASE_URL=http://localhost
    PORT=8080
    NODE_ENV=development
    CLIENT_SECRET=xydwy10290askajs
    


    간단한 노드 Js 애플리케이션을 만들고 dotenv 파일에서 server.js를 사용하자.

    /*
      file: server.js
    */
    
    const http = require('http');
    const express = require('express');
    // import dotenv package
    const dotenv = require('dotenv');
    
    // Use `.env` config when the NODE_ENV is other than production
    if (process.env.NODE_ENV !== 'production') {
      dotenv.config();
    }
    
    const app = express();
    
    // Root URL will serve all the process env values from the .env file
    app.get('/', (req, res) => {
      res.json({
        node_env: process.env.NODE_ENV,
        port: process.env.PORT,
        api_root_url: process.env.API_BASE_URL,
        client_secret: process.env.CLIENT_SECRET,
        port_lowercase: process.env.port || null // Will be null, since env variables are case sensitive
      });
    });
    
    // Read port from PORT env variable or use 8080
    const port = process.env.PORT || 8080;
    const server = http.Server(app);
    
    server.listen(port, () => {
      console.log(`Server listening on port: ${port}\n`);
    });
    

    dotenv 이외의 환경에 대한 코드 사용 production . port 파일에서 NODE_ENV 값과 .env를 읽습니다.

    서버를 시작하고 루트 URL을 확인하십시오.
    http://localhost:8080

    이것이 결과일 것이다,

    {
      "node_env": "development",
      "port": "8080",
      "api_root_url": "http://localhost",
      "client_secret": "xydwy10290askajs",
      "port_lowercase": null
    }
    


    보시다시피 이러한 env 키는 대소문자를 구분합니다.

    좋은 웹페이지 즐겨찾기