-
AWS : EC2 서버실행 오류Problem-Solving 2022. 3. 7. 11:20
< 문제상황 >
EC2 서버에서 만들어놓은 서버(깃허브 리파지토리) clone 후 npm install 및 .env 파일 설정 후 서버 실행하니 서버가 실행되지 않는 문제
: 깃허브 리파지토리 가져오고 필요 라이브러리 설치(npm install)
: 서버 작동에 필요한 환경변수(.env) 설정
: 이후 서버 실행 시 ReferenceError : TextEncoder is not defined 발생
< 접근 1 >
서버 실행 시 ReferenceError 에러가 발생했고, 이에 대한 내용이 터미널에 찍혀있으니 이를 토대로 이게 무슨 오류이고 왜 발생하였는지 찾아보았다.
찾아보니, next.js 나 mongoose, mongodb 사용 등 다양한 상황에서 이 문제가 발생한다. TextEncoder라는 함수는 코드를 실행할 때 문자열을 인코딩해주는 함수인데 node_modules/whatwg-url/lib/encoding.js 파일 안에 정의가 되어있고, 이후 인코딩 시 이 함수를 가져와서 사용한다.
하지만, 간혹 코드 실행 시 이 에러가 발생한다면 해결방법은 다음과 같이 여러 방법이 있다.
1. Node.js 버전 최신화
2. TextEncoder 함수 재정의
내 경우 노드 버전은 최신인 상태라 encoding.js파일 안에 TextEncoder함수를 재정의 해주었다.
: encoding.js 파일의 최상단에 코드 추가
const {TextDecoder, TextEncoder} = require("util");
참고 문서 : https://stackoverflow.com/questions/19697858/referenceerror-textencoder-is-not-defined
ReferenceError: TextEncoder is not defined
I'm writing a simple addon in Firefox - 24, on Linux. I get the error: ReferenceError: TextEncoder is not defined when I do: var encoder = new TextEncoder(); the function I'm using is: function
stackoverflow.com
< 접근 2 >
TextEncoder 에러 해결 후 서버 실행 시 이번에는 mongoDB 관련 에러 메시지가 출력되며 서버가 올바르게 작동하지 않았다.
: 에러 메시지 => 내 mongoDB Atlas cluster에 연결하지 못하고 서버가 실행이 됨.
TextEncoder에러를 해결하닌 이번에는 데이터베이스와 연결하지 못하는 문제가 발생하였다. 분명 local에서는 잘 연결이 되었는데 EC2에서는 연결이 되지 않는 걸 보니 데이터베이스 초기 세팅 시 액세스 가능한 IP설정하는 부분이 생각이 났다.
mongoDB Atlas cluster에 들어가 Network Access 부분에 들어가 확인해보니 역시 내 local에 해당하는 ip만 액세스 가능하도록 설정이 되어 있었다.
그래서 데이터베이스에 액세스 가능한 ip목록에 EC2의 ip를 추가해주고
다시 서버를 실행시켜 주니 정상적으로 데이터베이스 연결 후 서버가 잘 실행되는 것을 확인할 수 있었다.
< 해결 과정 >
1. TextEncoder Error => encoding.js 파일 안에서 재정의
2. DB 액세스 가능한 ip리스트에 EC2 ip 추가
'Problem-Solving' 카테고리의 다른 글
AWS : ELB를 이용한 HTTPS 구현 (0) 2022.03.28 HTTP Request의 query로 온 배열을 이용해 필터링 할 때 (0) 2022.03.25 카카오 맵 API 실행 안되는 경우 (0) 2022.03.18 AWS : EC2 서버에 연결되지 않을 경우 (1) 2022.03.02 .env 파일 안 환경변수들이 안 불러와질 때 (2) 2022.01.24