본문 바로가기
728x90
반응형

nodejs14

[Bun 시리즈] #2 Bun은 왜 빠를까? JSC vs V8 Bun은 뭔 짓을 했길래 빠를까? 🤔 Bun에 감동하자마자 든 생각이 👆였다. 그래서 이거저거 찾아보다가 Bun 공식 페이지에 AI로 물어보는게 있어서 사용해봤다. 만두가 귀엽다. Bun AI가 알려준이유는 2가지다. 1. JSC 엔진 사용 2. 내장된 파일 변환 파일러 두번째 내장된 파일 변환에 대해서는 1편 TypeScript에 대한 NodeJS와 BunJS 차이에서 다뤘다. 그래서 이번엔 첫번째 JSC 엔진 사용에 대해 알아보자. JavaScript 엔진 JSC는 JavaScriptCore 엔진이다. JavaScript 엔진 중 하나인데 우선 JavaScript 엔진이 무엇인지 알아보자. 한마디로 정리하면 JavaScript 언어로 짜인 코드를 해석하고 실행하는 *인터프리터다. 핵심 기능은 파싱, .. 2023. 11. 4.
[Bun 시리즈] #1 Bun 공식문서에서 알려주는 Quickstart 따라해보기 NodeJS를 두고 지금 BunJS에 눈돌아갔니? 맞다. 어느날 우연히 본 영상 하나로 난 Bun으로 사이드프로젝트를 만들어야겠다 생각했다. https://youtu.be/a8uPDppckQk?si=OkesGXLDoiwBG1cR 코딩애플님의 'Bun 서버가 4배 빠르다는건 진짜인가(vs Node.js)'의 영상이었다. 이걸 보면 Bun에 관심이 갈 수 밖에 없다 👍 한 번씩 서버를 킬 때 느려터졌네 하는 순간들이 있었는데... 드디어 NodeJS를 대처할 수 있는 JS 런타임 및 패키지 관리자가 생겨서 너무 좋다 😆 (Bun은 최근에서야 1.0 버전을 출시하면서 그동안 많은 제약들을 벗어났다는 평을 받고 있다.) 맛보기로 공식문서가 제공하는 튜토리얼 따라하기 https://bun.sh/docs/quick.. 2023. 10. 22.
[express] middleware 결과 다음으로 넘겨주기 - next()에 parameters 넣어주기?! 중복코드 없애기 = middleware 사용하기 A, B, C API가 있다. 모두 동일하게 먼저 User라는 데이터가 있는지 확인한다고 하자. 그럼 A, B, C API를 담당하는 router에 User를 조회하는 프로세스가 사용될 것이다. 개발자란 동일한 코드를 최대한 사용하지 않는다가 나의 개발론이기 때문에 매우 거슬렀다. 그래서 사용한게 middleware다! middleware를 이용하면 다음 미들웨어로 현재 요청을 넘길 수 있다. 더 자세한 것은 공식문서에서보자. https://expressjs.com/en/guide/using-middleware.html Using Express middleware Using middleware Express is a routing and middleware.. 2023. 3. 8.
인코딩 된 문자열 생성하기 btoa()는 NodeJS에서 사용 ❌ const encodedData = btoa('Hello, world'); // 문자열 인코딩 const decodedData = atob(encodedData); // 문자열 디코딩 문자열을 인코딩할 일이 있어 이거저거 알아보다가 JavaScript에서 제공해주는 btoa() 함수가 있다는 것을 알게 되었다. 바로 사용해주겠어 하고 NodeJS 로직에 작성해보니 아래와 같이 btoa이 이상하다. 마우스를 올려보니 The signature '(data: string): string' of 'btoa' is deprecated. 라는 메시지가 뜬다. 찾아보니 Node에선 더이상 btoa()와 atob()를 사용하지 않는다고 한다. 그러면 어떻게 해야할까? Buffer.. 2023. 2. 14.
[Error] Sharp - Error: Input file is missing / Error: Input buffer contains unsupported image format + Axios로 파일 통신 받을 때 생기는 오류 npm sharp란? NodeJS에서 이미지를 resize하고 싶을 때 자주 사용하는 라이브러리는 sharp라고 할 수 있다. Weekly Downloads가 100만이 넣을 정도로 많은 개발자들이 사용한다. 이미지를 Resizing 해줄 뿐만 아니라 Compositing 등 이미지에 한해서는 다양한 기능이 있다. 궁금한 사람들은 아래 공식 문서를 보길 추천한다. https://sharp.pixelplumbing.com/ sharp - High performance Node.js image processing sharp.pixelplumbing.com 문제 시나리오 나의 경우 DB에 저장된 이미지를 A라는 서비스가 B 서비스로 보낼 때 문제가 생겼다. 너무 간단하게 말하는 것 같아 코드를 보면서 이야기하.. 2022. 12. 2.
TypeScript + NodeJS(express) + MongoDB 조합으로 API 서버 만들때 주의할 점 들어서며 NodeJS를 쓰는 개발자들은 처음엔 유연한 JavaScript로 시작했다가 어느순간 TypeScript으로 넘어가게 되고 고마움을 느낍니다. 저도 개발을 하면 할수록 TypeScript의 필요성을 느끼고 있고 잘 이용할려고 합니다. 하지만 TypeScript로 API 서버를 만들면서 의아했던 부분들이 있었습니다. 의문 1. 상황 req.body로 클라이언트로부터 서버로 데이터를 전달 받았을 때 type 오류가 발생하지 않습니다. 제가 생각했을 때 아래 두가지 상황에서 분명 오류가 발생하고 데이터가 저장되지 않아야 하는데 그렇지 않았습니다. 2-1. Interface에 정의한 요소가 아님에도 오류가 발생하지 않는다. // interface.ts export interface UserInterfa.. 2022. 9. 28.
[NodeJS] code ERESOLVE ERESOLVE could not resolve 해결 클라이언트 Dockerfil을 작성 중 code ERESOLVE ERESOLVE could not resolve 라는 오류를 만나게 되었다. 오류의 원인은 npm v7에서는 npm install 충돌이 발생하면 실패한다고 한다. npm v4~6에서는 충돌이 있어도 경고만 뜨고 설치는 되었다고 한다. RUN npm install --save --legacy-peer-deps 발견한 해결 방법은 --save --legacy-peer-deps 였다. 해본 결과 Build도 잘 되었고 작동도 문제 없이 되었다. 좀 더 찾아보니 --legacy와 --force 둘 중 하나를 사용하여 해결하는 것 같았다. --legacy는 충돌을 무시하고 peerDependency가 맞지 않아도 일단 설치한다고 한다. --forc.. 2022. 8. 30.
[NodeJS] 검색기능 만들기 (1) MongoDB Query 규모가 크지 않은 서비스라면 굳이 검색엔진을 구축할 필요는 없습니다. MongoDB Query를 가지고 간단한 검색기능을 알아보도록 하겠습니다. 1) Regex 아마 가장 많이 사용하는 방법이 정규식이라고 생각합니다. 정규식을 이용하면 쿼리 중에 문자열의 패턴을 검색 가능합니다. 정규식은 패턴을 일련의 문자와 일치시키는 일반화된 방법입니다. .find({ title: { $regex: "강아지" } }) 원하는 필드에 찾고자 하는 데이터를 $regex로 걸어줍니다. 그러면 title이라는 필드 안에 "강아지"라는 단어를 가진 데이터들을 모두 가지고 옵니다. 예를 들어, title이라는 데이터에 "강아지" 말고도 "강아지산책", "사료강아지" 등 강아지가 포함된 모든 데이터들이 검색됩니다. 부분 텍스트 검.. 2022. 8. 19.
[ErrorFix] Axios multer로 파일 전송시 req.files에 나오지 않는 오류 해결 Axios로 파일을 보낼때 파일이 req.files에 나오지 않는 현상이 나왔다. 원래라면 이렇게 req.files를 할 때 나와야하는데 아예 빈 값이 나와 당황스러웠다. const formData = new FormData(); formData.append("script", data); axios.post(`http://${process.env.LOGICKIT_URL}/module/add`, formData, { headers: { 'Content-Type': 'multipart/form-data' } }) .catch((error) => { console.log(`fail 😱`, error.message) }) 작성한 코드를 한번 살펴보면 이상한 점이 하나도 보이지 않는다. 원인을 찾기 위해 여러가지.. 2022. 8. 11.
728x90
반응형