dotenv 및 상대 경로

여러분 대부분은 유명한 ".env 파일에서 process.env로 환경 변수를 로드하는 제로 종속성 모듈"인 dotenv을 사용하고 있습니다.

나는 일반적으로 dotenv가 필요하지 않은 콤보 node.js/AWS Lambda와 같은 서버리스 환경에서 작업하지만 node.js 람다에 대한 로컬 Express 래퍼를 실행하고 단위 테스트를 수행하는 동안 환경을 제어하는 ​​데 사용합니다.

사용하기 위한 명확하고 잘 알려진 패턴이 없으면 dotenv가 내장require 함수처럼 작동하고 상대 경로를 허용한다고 생각하는 함정에 빠질 수 있습니다. with require 문과의 근접성은 도움이 되지 않습니다. 다음과 같은 것:

const { myfunction } = require("../mymodule.js");
require("dotenv").config({ path: `../.env.test` }); 

그러나 이것은 작동하지 않습니다.

왜 그런지 알아? Dotenv는 구성된 경우에만 절대 경로를 허용합니다. official docummentation은 이에 대해 명확하지 않으며 단위 테스트에서 환경 변수가 로드되지 않는 이유를 파악하는 데 몇 시간을 보낼 수 있습니다.

따라서 필자는 자신의 작업dotenv 코드를 정교하게 만들고 안전하게 저장하고 node.js 앱의 환경 변수를 설정해야 할 때마다 재사용하는 것을 권장합니다.

이것은 내가 따르는 접근 방식의 예입니다.

const { myfunction } = require("../mymodule.js");
require("dotenv").config({ path: __dirname + `/../.env.test` }); 
__dirname 함수를 사용하여 현재 모듈의 경로를 가져온 다음 .env 구성 파일에 상대 경로를 추가합니다.

이 정보가 도움이 되길 바라며 이 함정에 절대 빠지지 마십시오.

즐거운 코딩!

좋은 웹페이지 즐겨찾기