전체 글97 Node.js Swagger API 사용 해보기 API 문서의 부재 에라 귀찮은거 뭐하러 만들어 그냥 하면 되지! 했던 나.. 대체 왜 그랬니..? 프로젝트를 진행하던 도중 중대한(?) 문제가 발생했다 HTTP 상태 코드를 사용하는게 귀찮아서 res.send로 다 때려버렸는데 에러로 들어가야 할 값도 200으로 잡혀서 클라이언트쪽에서 에러를 캐치하질 못했다 morgan으로 확인해보니 res.status를 지정해주지 않아서 200이 디폴트로 잡힘 그랬더니 클라이언트 axios catch로 에러메세지가 들어가지 않고 then으로 에러가 들어가네? 엌ㅋㅋㅋㅋ 이참에 상태 코드도 지정해줄 겸 API도 문서화 시켜볼려고 이것 저것 찾다가 발견한게 Swagger다 그래서 Swagger 라는게 뭔데? 처음 개발하거나 유지보수할때 API 서버가 어떤 데이터를 주고 .. Node.js 2023. 2. 15. 네이버 SENS Service 문자인증 구현 에러 문제 1. 로직 자체는 돌아가지만 문자가 발송되지 않는 현상 const secret_key = require("../../config/ncpSens"); const { response, errResponse } = require("../../config/response"); const baseResponse = require("../../config/baseResponseStatus"); const axios = require("axios"); const Cache = require("memory-cache"); const CryptoJS = require("crypto-js"); const date = Date.now().toString(); const uri = secret_key.NCP_servic.. Project/Error Handling 2023. 2. 9. 기상천외한 PassPort 모듈 에러 req.user 가 없어요!!! 세션도 만들어지지 않아요!! 구버전 모듈이에요!! 그동안 패스포트 모듈을 가지고 놀면서 만난 온갖 에러 십색기들! 로그를 분명히 찍어놨는데 어따 팔아먹었는지 안보여서 그냥 구두로 서술함 미래의 내가 알아서 잘 써먹겠지 뭐 문제 발생 1. 제대로 동작하지 않는 트위치 로그인 모듈 트위치 소셜 로그인을 구현하고자 하면 겪게될 첫번째 문제 패스포트 공식문서에 있는 모듈은 절대 쓰지말자 트위치의 정책이 바뀌었는데 공식문서의 모듈은 그걸 반영하지 않아서 뭘 하든 동작조차 하질 않는다 기억상으론 유저가 없니 어쩌니 저쩌니 했던거 같다 이걸로 2일을 허비함 이게맛냐!? 만약 채 - 신 모듈을 설치했는데 토큰이 없니 어쩌니 하는 에러가 뜬다면 그건 로그인 후 리다이렉트를 이상한 곳으로 .. Project/Error Handling 2023. 2. 9. express mysql session 에러 error: er_not_supported_auth_mode: client does not support authentication protocol requested by server; consider upgrading mysql client Node.js와 MySQL이 연동되지 않을때 발생하는 에러 대표적인 해결방법으론 MySQL 터미널에서 root의 plugin을 caching_sha2_password 에서 mysql_native_password 로 변경하는 것 등이 있지만 본문에선 기본적으로 MySQL과 Node.js가 평상시 정상적으로 연결이 될 때를 기준으로 서술함 초 - 간단한 해결 방법 //index.js -> 메인 const session = require("express-session").. Project/Error Handling 2023. 2. 9. Nodemailer 이미지 파일 경로 에러 Error: ENOENT: no such file or directory, open ... 이미지 파일의 경로가 잘못되서 발생된 에러 처음엔 상대경로인줄 알았으나 시작지점이 루트 디렉토리 였다. attachments: [ { filename: "vitaBiddingLogo.png", path: "../protoAuction_Client/src/assets/img/vitaBiddingLogo.png", cid: "vitaBiddingLogo", }, ], //path -> 프로젝트 루트 디렉토리부터 시작되니 고려해서 경로 입력 nodeMailer 인증메일 전송결과 Reference Node.js 메일 전송 기능 구현 - Nodemailer + Gmail Nodemailer 공식문서 Node.js | nod.. Project/Error Handling 2023. 1. 26. Passport-google-oauth20 로그인 엑세스 차단 에러 Missing required parameter: scope 400 오류: invalid_request 로그인 진입 URL을 callback으로 설정해줘서 발생되는 에러 패스포트는 소셜로그인을 E-Z 하게 구현할 수 있는 모듈이며, 구조자체는 같아서 어떤 소셜 로그인이든 패스포트에서 지원하면 죄다 끌어다 쓸 수 있는게 최대장점 한번 배워두면 요긴하게 쓰는데 습득 과정이 정말 더러웠던 친구다 https://localhost:8080/auth/user/google //요놈이 로그인창 진입할때 사용되는 URL이고, https://localhost:8080/auth/user/google/callback //요놈이 로그인 결과 값을 받을때 사용되는 URL이다 //요놈으로 진입할때 엑세스 차단 에러가 발생된다 //.. Project/Error Handling 2023. 1. 18. Sequelize 마이그레이션 에러 ERROR: Attribute... cannot be parsed: Unknown type 'INTEGER.UNSIGNED' DB 재설계를 위해 마이그레이션을 하다가 발생된 에러 npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string 해당 명령어를 입력하면 정의한대로 마이그레이션을 만들어주는데 INTEGER.UNSIGED 타입이 없다고 한다 아직 공식문서를 찾아보는 짬이 부족해서 명령어 선에서 해결하진 못했다.. 갸아악 그래서 임시로 INTEGER로 지정해서 만들어준 뒤 코드를 수정해서 타입을 변경해줬다 직접 변경할땐 마이그레이션과 모델 둘다 수정해줘야한다 안그러면 에러 존나.. Project/Error Handling 2023. 1. 18. [Fourth] 사실상 네번째 프로젝트 코드스테이츠에서 진행했던 첫번째, 두번째 프로젝트는 대차게 말아먹고 어느덧 네번째 팀프로젝트를 시작하게 됫다 세번째 프로젝트부턴 개 씻팔 같았던 리눅스도 버려버리고 윈도우에서 개발환경을 구축해놨다 꼭 리눅스여야 되는게 아니더만 나한테 왜그랬어!!! 윈도우 다이스키!!!!!!!!!!!!!!!!!!!!! 실패를 두번이나 해봐서 잘됬다고 해야될지.. 코드스테이츠에서 교육받던 시절에 프로젝트를 진행할땐 와.. 이게 이렇게 암걸릴 수 있나? 프로젝트란게 원래 이런가? 이게맞나? 싶었는데 수료 후 인원을 다시 모아서 세번째 프로젝트를 할땐 개애애앵장히 수월하게 진행됫다 이러나 저러나 여윽시 제일 중요한건 팀원들과의 커뮤니케이션인듯 세번째 프로젝트가 API를 따온 캠핑장 소개? 사이트였다면 이번에 진행할 프로젝트의 .. Project/프로젝트 회고 2022. 12. 23. [Fourth] 서버 초기 설정 npm init node.js로 프로젝트를 시작할 때 쓰면 유용한 명령어 index.js const express = require("express"); const app = express(); const fs = require("fs"); const https = require("https"); const cors = require("cors"); const passport = require("passport"); const session = require("express-session"); const cookieParser = require("cookie-parser"); require("dotenv").config(); dbConfig = require("./config/database.js"); .. Project/Fourth 2022. 12. 23. 그저 지랄났다 티스토리 카카오 데이터 센터 터지고 나니 임시저장으로 킵해뒀던 글들도 싹 날아가고 아주 야랄났다!! 50개 정도 쌓아뒀던걸로 기억하는데..시벌 PC인데도 모바일로만 글 나오는 꼬라지좀 봐라 엌ㅋㅋㅋㅋㅋㅋ 코드스테이츠는 진즉에 수료했고 그동안 바빠서 못한 블로깅좀 할려니까 어림도 ㅋㅋㅋ 없네 ㅋㅋㅋㅋ 잔디도 심을 겸 깃허브로 블로그 이전 해야되냐... 귀찮은데... 언제쯤 복구되려나 이거 그저 그런 일상 잡담 2022. 10. 18. [알고리즘] 시간복잡도 (빅오표기법) 시간 복잡도(Time Complexity) 시간 복잡도 표기법 Big-O(빅-오) : 최악의 경우를 고려 Big-Ω(빅-오메가) : 최선의 경우를 고려 Big-θ(빅-세타) : 중간(평균) 알고리즘이란 문제를 해결하는 최선의 선택 효율적인 방법을 고민한다는 것은 시간 복잡도를 고민한다는 것과 같은 말 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가를 의미 효율적인 알고리즘 구현 : 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화한 알고리즘 구성 시간 복잡도는 주로 빅-오 표기법을 사용해서 표기 1. Big-O 표기법 최악의 경우를 고려하므로, 프로그램이 실행되는 과정에서 소요되는 최악의 시간까지 고려할 수 있음 최소한 특정 시간 이상이 걸린다 혹은 이 정도 시간이 .. CodeStates/JavaScript 2022. 4. 21. [CSS] HTML 셀렉터의 종류 1. 셀렉터 h1 {} div {} 모든 h1을 선택 모든 div를 선택 2. 전체 셀렉터 * {} 모든 엘리먼트를 선택 3. Tag 셀렉터 section, h1 {} 쉼표(,)는 section과 h1를 다중으로 선택 4. id 셀렉터 #only {} #label.center {} id가 only인 엘리먼트를 선택 id가 label이면서 동시에 class가 center인 엘리먼트를 선택 5. class 셀렉터 .center {} .show#only {} class가 center인 엘리먼트를 선택 class가 show이면서 동시에 id가 only인 엘리먼트를 선택 6. attribute 셀렉터 a[href] {} p[id="only"] {} a 엘리먼트 중에서, href 속성을 갖는 모든 엘리먼트를 선택 .. CodeStates/React 2022. 4. 16. 이전 1 2 3 4 ··· 9 다음 반응형