express

    프론트엔드 웹서버 직접 만들기 (2) - 라이브러리(webpack-dev-server)는 어떻게 되어있을까?

    프론트엔드 웹서버 직접 만들기 (2) - 라이브러리(webpack-dev-server)는 어떻게 되어있을까?

    이전 게시글 (https://0422.tistory.com/312) 을 통해 나름대로 웹서버를 구현해보았다. 그렇다면 진짜 사용되는 모듈들은 어떻게 구현되어있는지 확인해보자. webpack-dev-server 이녀석은 서버를 어떻게 띄우고 있을까? 이건 examples에 있는 코드인데, 확인해보면 lib/Server에서 Server Class를 가져와서 server인스턴스를 만든 후 server.start()를 통해 시작시키고 있는 것을 확인할 수 었다. 그럼 Server Class를 뜯어보자. https://github.com/webpack/webpack-dev-server/blob/master/lib/Server.js 여기서 확인해보자. 확인해볼만한 부분은 1번과 2번일 것이다. 일단 initiali..

    NodeJS서버에선 절대 이벤트 루프를 막지마. (feat. readFileSync)

    NodeJS서버에선 절대 이벤트 루프를 막지마. (feat. readFileSync)

    https://nodejs.org/ko/docs/guides/dont-block-the-event-loop 이벤트 루프와 워커 풀을 막지 마세요! | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 이 글이 나오게 된 배경 Express서버를 짜던 중 파일 입출력을 할 일이 생겼는데, 나는 지금까지 그래왔듯 자연스럽게 fs모듈을 import해서 fs.readFileSync를 사용했다. 사실 readFile 메서드도 있지만 이 친구는 비동기로 작동하기 때문에 Promise로 Wrapping하여 사용해야했고, 그게 귀찮다는 이유에서 readFileSync를 지속적으로 남발해왔다. readFil..

    FCM으로 푸시알림 전송하기 (Next)

    FCM으로 푸시알림 전송하기 (Next)

    왜 도입하게 되었나 블로그 피드를 만들긴 했으나, 블로그 글이 올라왔을때, 알림이 오게 하고 싶었다. https://0422.tistory.com/300 풀과 푸시 풀 일반적으로 사용되는 HTTP요청의 모습이다 request가 오면 서버가 response를 주는 형태이다. 푸시 푸시는 요청이 없어도 응답을 내려준다. fcm에서는 서비스워커(firebase-messaging-sw.js)가 일을 한다고 한다. FCM이란? Firebase Cloud Messaging의 약자이다. 위 사진처럼 동작한다. 위사진 과정을 이해해보자. 준비과정 1. Get Token 클라이언트는 디바이스 고유의 token을 firebase로부터 발급받는다. 이 token은 기기마다 고유하다! 2. Send and store toke..

    이번에야말로 Mocking을 해보자

    이번에야말로 Mocking을 해보자

    이번에야말로 모킹을 통해 유닛테스트를 작성해보자. 왜 필요한가? 솔직히 이걸 제대로 이해하지 못해서 계속 모킹이라는 것을 이해하지 못했던 것 같다. https://0422.tistory.com/294 Docker compose로 테스트 코드 환경 구성하기(express + TypeORM) - typeORM, Jest 설정 컨테이너 설정은 다했으니 TypeORM과 Jest의 설정을 해보자. Data-Source.ts 일단 나는 DataSource방식으로DAO코드를 작성했다. https://orkhan.gitbook.io/typeorm/docs/data-source Working with DataSource - typeorm Generally, you ca 0422.tistory.com 이전에 적었던 글을 ..

    express 예외 공통 처리하기

    express 예외 공통 처리하기

    장고 프레임워크의 경우에는 raise Exception만 하면 알아서 오류코드를 넘겨줬었다. 근데 express는 그런 공통 에러처리가 없어서 controller단에서 전부 오류를 처리해줘야하는 문제가 있었다. 이런식으로 모든 오류에 대해 catch한다음 status와 메시지를 전부 따로따로 처리해줘야 한다. 이런 경우, 두 가지 문제가 생긴다. 1. 예상치 못한 경우, 에러처리를 해줄 수 없다. => 이런 경우, 처리됐다고 response는 전송되지만 제대로 적용되지 않는 문제가 발생할 수 있음 2. res.status(상태코드).json(어쩌구...)하기 너무 귀찮음... 공통 에러 처리하기 https://expressjs.com/ko/guide/error-handling.html Express 오류..

    MySQL로 로그인, 회원 가입 구현하기 (1) - express, router, mysql연동

    MySQL로 로그인, 회원 가입 구현하기 (1) - express, router, mysql연동

    express 구성 routes라는 폴더를 만들고 라우터를 연결해주었다. const express = require('express'); const cors = require('cors'); const morgan = require('morgan'); const dotenv = require('dotenv'); const app = express(); dotenv.config(); app.set('port', 8080); app.use( cors({ origin: '*', }) ); app.use(morgan('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.listen(app.get('port'),..

    Express 시작하기

    Express 시작하기

    간단 메모, 필기 nodemon 서버코드에 수정사항 생길때 마다 서버를 자동으로 제시작해줌 const express = require('express'); const app = express(); app.set('port', 3000); app.get('/', (req, res) => { res.send('Hello Express'); }); app.listen(app.get('port'), () => { console.log(app.get('port'), '번 포트로 서버 열림'); }); app.set을 통해 서버가 실행될 포트를 지정함 app.get(주소, 라우터)에 대해 주소에 대한 GET요청이 왔을때 어떤 동작을 할 지 적음 요청에 따라 프로토타입 메서드로 post,put,patch,delete..