JavaScript/Nodejs

    [NodeJS] express 오류 : Cannot set headers after they are sent to the client

    yarn start 를 했을 때 문법상 문제가 없다고 했는데,, Request 를 보내니 갑자기 뿜어내는 해당 오류, 이 오류는 무엇인지 찾아보기로 하였습니다. userRouter.route('/token') .get((req, res)=>{}) .post((req,res)=>{ const refreshToken = req.body.refreshToken; if(!refreshToken) res.sendStatus(403); const accessToken = token().issuance(refreshToken, res); res.json({accessToken : accessToken}) }) 제 코드의 일부 입니다. /signup 으로 get 요청을 보내면 작동하는 부분 입니다. 하지만 , 여기서 ..

    [NodeJS] TypeScript 사용 시 Request CustomType

    코드가 잘 보이지 않으신다면 우측 하단의 달 모양을 눌러주시기 바랍니다. 최근 토이 프로젝트를 TypeScript로 진행하며 문제가 생긴 부분이 한 가지 있었습니다. 원래 JavaScript 를 이용해서 JWT 로그인 인증을 구현했을 때 req 객체에 임의의 값을 넣는데 이를 TypeScript로 이용을 하려 하니 문제가 있었습니다. -JavaScript const customMiddleWare = (req, res, next) => { req.authData = { status : 200, jwt : { accessToken : accessToken, refreshToken : refreshToken } } next() } 이런 형태의 코드는 JavaScript 에서는 문제없이 해당 미들웨어를 거쳐서 ..

    [NodeJS] Mysql 연결하기 [Mysql createPool]

    Mysql 모듈 설치 아래 명령어를 통해 mysql 을 설치해줍니다. yarn add mysql Mysql 모듈 사용하기 설치를 하셨다면, 새로운 js 파일을 만들어 require 시켜줍니다. // pool.js const mysql = require('mysql') 이 후 각자에 맞는 연결을 해주도록 합니다. // pool.js const mysql = require('mysql') const dbConfig = { host: 'localhost', port: 3306, user: 'root', password: 'root', database: 'authtest' } 여기서 createConnection 과 createPool 이 나오게 됩니다. Mysql Pool Connection 과 Pool 의 ..

    [Nodejs] 로그인 / 회원가입 [JWT Token]

    글이 잘 보이지 않는다면 우측 하단의 달 모양을 눌러 라이트모드로 변경해주시기 바랍니다. 해당 글은 MacOS 를 기준으로 작성이 되었음을 미리 알려드립니다. WindowOS 를 이용하시는 분은 추후 업로드될 게시글을 기다려주시거나 다른 작성자의 게시글을 확인해주시기 바랍니다. JWT를 이용하는 나만의 이유 예전에는 Session 을 이용해 자동로그인, 인증등을 하고 있었습니다. 하지만 이 기능은 구현하기가 복잡하기도 하고 DB 혹은 서버에 많은양의 데이터를 보관/처리를 하기때문에 성능상 이슈가 발생하고 있었습니다. 이러한 이슈를 해결하기 위해서어떤 방법이 있을까 하다가 찾게 된것이 JWT 였습니다. JWT 는 AccessToken과 RefreshToken 을 클라이언트에서 가지고 있다가 필요할때만 서버..

    [Nodejs] 로그인 / 회원가입 [ 로그인 ]

    글이 잘 보이지 않는다면 우측 하단의 달 모양을 눌러 라이트모드로 변경해주시기 바랍니다. 해당 글은 MacOS 를 기준으로 작성이 되었음을 미리 알려드립니다. WindowOS 를 이용하시는 분은 추후 업로드될 게시글을 기다려주시거나 다른 작성자의 게시글을 확인해주시기 바랍니다. 로그인 라우터 만들기 로그인을 하기 위해 nodejs 에서 코드 작성을 해보도록 하겠습니다. router.post('/login',(req, res) => { console.log(req.body); res.end(); } 해당 라우터는 /user 이후의 경로입니다. post 형식으로 http://localhost:3000/user/login 에 요청을 줄 수 있습니다. 이처럼 해주면 우선, 해당 라우터로 데이터가 들어오게 될텐데..

    [Nodejs] 로그인 / 회원가입 [ Mysql 세팅 및 연동 / express-mysql-session ]

    글이 잘 보이지 않는다면 우측 하단의 달 모양을 눌러 라이트모드로 변경해주시기 바랍니다. 해당 글은 MacOS 를 기준으로 작성이 되었음을 미리 알려드립니다. WindowOS 를 이용하시는 분은 추후 업로드될 게시글을 기다려주시거나 다른 작성자의 게시글을 확인해주시기 바랍니다. MySQL 설치하기 - Homebrew 설치 우선, Homebrew 를 설치해야 합니다. 위 링크에서 안내를 해 주는대로 homebrew 를 설치해주시기 바랍니다. MySQL 설치하기 - MySQL 설치 터미널을 열어줍니다. 터미널에 이와같이 brew update 를 입력하여 homebrew를 업데이트 해주시기 바랍니다. 이 때 시간이 조금 걸리게 되는데 기달려주시면 아래와같이 나타나게 됩니다. 이와같이 나타나게 된다면 업데이트가..

    [Nodejs] 로그인/회원가입 구현하기 (세션유지편)

    2021.05.20 - [내가 공부하는것/JavaScript] - [NodeJS] 로그인/회원가입 구현하기 ( 회원가입편 ) 2021.05.20 - [내가 공부하는것/JavaScript] - [NodeJS] 로그인/회원가입 구현하기 (로그인편) >> 내용이 잘 보이지 않는다면 우측 하단의 달 모양을 클릭해주시기 바랍니다. { if(req.session.loginData){ res.send({loggedIn : true, loginData: req.session.loginData}) }else{ res.send({loggedIn : false}) } }) 이런 형식으로 작성이 된곳으로 get 요청을 해주시면 된다. 여기서 보면 session에 저장된 loginData 값이 있으면 loginData에 세션데..

    [NodeJS] 로그인/회원가입 구현하기 (로그인편)

    2021.05.20 - [내가 공부하는것/JavaScript] - [NodeJS] 로그인/회원가입 구현하기 ( 회원가입편 ) >> 내용이 잘 보이지 않는다면 우측 하단의 달 모양을 클릭해주시기 바랍니다. { if(err) console.log(err) }) res.end() }) 이렇게 해주면 원하는 값을 가져올 수 있을것이다. 그런데 내가 위에서 없는 id 값을 가져오면 아무것도 출력이 되지 않는다고 했는데 이때는 id가 존재하지 않는것이니 이 조건을 추가해주겠다. router.js const db = require('../db/config') router.post('/login', (req,res,next) =>{ param = [req.body.id, req.body.pw] db.query('SEL..