Javascript를 서버에서 사용하기 위해 구글 V8엔진을 기반으로 한 nodeJS프레임워크를 사용해야 한다. 따라서 REST API서버를 편리하게 구현하기 위한 프레임워크가 express이다.Express는 Node.js를 위한 인기 있는 웹 서버 프레임워크로, 유
Multer공식문서body객체와 한 개의 file혹은 여러개의 files객체를 request객체에 추가할 수 있도록 한 모듈
순수한 node.js의 기능만으로는 직접 웹 애플리케이션을 구현할 때 세련되지 못하고 다소 불편하다는 문제가 있었다.그래서 프로그래머들은 node.js위에서 동작하는 Web Framework를 만들기 시작했다.웹에서 반복적으로, 어디에서나 일어나는 일들을 안전하게 처리
Express 애플리케이션을 구축할 때, 개발자는 app 객체와 router 객체를 사용하여 라우트를 정의합니다. 이 두 가지 접근 방식은 Express 애플리케이션의 구조와 모듈화에 영향을 미치며, 각각 특정 상황에서 더 적합할 수 있습니다.app 객체는 Expres
Winston은 Node.js 환경에서 로그를 기록하고 관리하기 위한 라이브러리입니다. 이 라이브러리는 다양한 로깅 수준과 형식을 지원하여 로그를 사용자 정의할 수 있습니다.설치: 먼저 Winston 라이브러리를 프로젝트에 설치해야 합니다. npm 또는 yarn을 사용
애플리케이션의 시작점입니다. 서버 설정, 미들웨어 등록, 라우팅 설정 등이 이루어집니다.요청을 가로채서 필요한 작업을 수행합니다. 예를 들어 인증, 로깅, 데이터 파싱 등을 처리합니다.URL 경로와 HTTP 메소드에 기반한 요청을 적절한 컨트롤러 함수로 연결합니다.실제
기존에는 http와 socket을 두 개의 port로 나누어 사용하고 있었다.하나의 인스턴스에서 두 개의 포트를 사용하는 것이 왜 문제인지 찾아보기로 했다.관리의 복잡성: 포트마다 각각에 대한 보안 규칙을 설정해야 한다. aws ec2인스턴스의 보안 그룹 설정에서 두
현재 http 연결을 we프로토콜로 전환하겠다는 요청을 보냄클라이언트에서 서버로 HTTP.GET요청을 보내면 이 요청에는 Upgrade: websocket 및 connetion: Upgrade 헤더가 포함된다. 서버가 WebSocket 연결을 지원하고 요청을 수락할 경
socketio.exceptions.ConnectionError: One or more namespaces failed to connect클라이언트의 소켓과 서버 소켓을 연결하는 과정 중 위와 같은 에러가 나왔다.socketio 클라이언트가 서버에 연결을 시도할 때 네
error code클라이언트의 소켓 연결이 끊기면서 서버가 같이 error로 인해 종료되는 문제클라이언트의 소켓에서 disconnect 라는 이벤트가 발생하면 deviceRepository.initializeDeviceState() 메서드는, 연결되어있는 데이터베이스에
ERR_HTTP_HEADERS_SENT 에러는 서버가 클라이언트에게 두 개 이상의 응답을 보내려고 할 때 발생하는 오류이다.즉, 하나의 응답을 보낸 뒤 또 다른 응답을 동시에 보내려고 할 경우 생기는 오류다.나의 경우 controller와 service에서 res를 통
코드를 리팩토링 하면서 나는 uploadImage().single(’file’);을 사용하기 위해 uploadImage객체를 Promise객체로 변경하는 코드를 작성했었다.uploadImageAsync ()는 util.promisify를 사용하여 Promise기반으로
업로드중..Node.js는 고성능 비동기 I/O 처리를 가능하게 하는 이벤트 루프 기반의 단일 스레드 모델을 사용합니다. 이 글에서는 Node.js의 핵심 구성 요소인 이벤트 루프, 백그라운드 작업, 태스크 큐의 작동 방식과 이들이 어떻게 Node.js의 비동기 처리를
DataServer에서 매번 토큰을 체크하고 인증하는 middleware방식 대신, 한번 Authorization된 클라이언트라면 절차를 생략하고 허용된 시간동안 imgae, json을 upload할 수 있는 권한을 부여할 수 있는 방법을 고민하게 되었다.이미지와 js
현재는 AVALVE_DATASERVER 디렉토리에 모든 파일이 담겨 있다.프로젝트의 규모가 증가함에 따라 파일이나 코드의 양이 증가할 수 있다. 이를 효율적으로 관리하기 위해 모듈화하고 구조화해야 한다.파일 구조화는 아키텍처와 단일 책임 원칙을 기반으로 이루어져야 한다
웹 개발의 역동적인 세계에서, 성능 최적화는 핵심입니다. Node.js 애플리케이션을 프로파일링하면, 병목 현상을 식별하고 개선할 수 있는 영역을 파악함으로써 효율성을 크게 향상시킬 수 있습니다. 이 가이드는 Node.js에서 프로파일링을 실행하고, 로그 파일을 생성하
Redis를 사용하여 Key값을 가져오는 중에 아래의 코드와 관련하여 에러가 발생했다.접근(1): 로컬에 설치된 Redis와 node.js에 설치된 Redis의 버전 호환성 문제를 살펴봤다. → 자세히 보기위해선 console.log를 찍어봐야 알 수 있다. 결과적으론
나는 /upload로 라우터 요청이 들어오기 전에 인증되도록 설정해뒀다. 그렇기 때문에 캐시된 데이터가 있다면 router로 넘어가도록 아래와 같이 로직을 작성했다.하지만 이 코드에서 cachedData 결과는 null이다.따라서 else{}에서 캐시된 데이터가 없는
참고자료레디스Redis가 뭐에요? 레디스 설치하기, 레디스 튜토리얼\[인메모리 데이터 저장소 Redis, 왜 사용할까? - Why RAM is Called메모리 계층 구조Redis가 사랑받는 이유에 대하여\[DB] Redis의 개념과 특징, 아키텍처 - Azderica
테스트 코드는 말 그대로 우리가 작성한 코드에 문제가 없는지 테스트하기 위해 작성하는 코드다.올바른 테스트 코드 작성을 위해선 흔히 기본 원칙이라 불리는 일곱 테스트 원칙을 따르는 것이 좋다. 일곱 테스트 원칙 테스팅은 결함의 존재를 보여주는 것이다.완벽한 테스트는 불