본문 바로가기

Frontend/Javascript

(11)
숫자 범위 표현의 에러 기존에 이런 식으로 코드를 작성했었는데, 예외처리가 잘 되지 않았었다. 기존 코드 if (!keyword) { throw new NotFoundException('검색 결과가 없습니다'); } const tokenId = Number(keyword); if (!isNaN(tokenId)) { if (1
clearInterval, setInterval (with RabbitMQ) RabbitMQ 관련 설정 파일을 보다가 clearInterval, setInterval을 보게 되었다. 이 두 가지가 무엇인지 알아보자. setInterval(콜백함수,시간) -> 시간(ms)을 간격으로 콜백함수를 반복 호출 여기서 intervalID를 갖는데, 고유하게 interval을 식별하는 값이라고 생각하면 된다. clearInterval()은 고유 intervalID를 제거해서 반복 호출을 중단한다. setInterval 중단/재시작 방법 1. setInterval() 함수의 반환값을 변수에 할당하여 반복 시작 let(or const) 변수 = setInterval(콜백함수,시간); 2. clearInterval(변수)로 반복 중단 clearInterval(변수); 3. setInterval(..
Serialize와 Deserialize의 차이점 (feat.Primitive Type, Reference Type) dSerialize와 Deserialize 이 둘이 계속 헷갈린다. 사실 이를 잘 안쓰기도 했고, JSON.stringify()를 보면 직렬화 하는구나~정도만 생각했지 직렬화가 뭔데?라고 설명하라고 하면 설명하지 못하는 상태였다. 다시금 보던 와중, https://blog.postman.com/when-and-how-to-use-json-serialization-in-postman/ 이 글을 보며 Serialize와 Deserialize에 대하여 다시 공부하게 되었다. Serializing : store & convert complex data 메모리로부터 데이터를 읽거나 쓸 때 사용한다. 흔한 data type 사용 시에는 multiple systems 사이에서 사용한다. complex data str..
package.json vs package.lock.json git에서 pull을 받거나 할때 package.lock.json 때문에 충돌이 나서 안되는 경우가 있다고 한다. 패키지 관리 package.json을 통해서 패키지 버전 관리를 한다. npm install을 하게 되면 package.json에 포함된 의존성 패키지들이 npm registry로부터 다운받아져 설치가 되고 node_modules 폴더에 저장이 된다. package.lock.json 파일이 필요한 이유 해당 프로젝트를 진행하는 모든 개발자가 동일한 package.json을 바라보고 있기 때문에 패키지를 설치하면 모두가 동일한 버전의 패키지를 설치하지 않을까?하지만 그렇지 않다. package.json에 명시한 버전들이 ~ (틸드), ^(캐럿)으로 인해 버전의 범위가 달라지기 때문이다. 예시 ..
Property 프로퍼티란? + 프로퍼티에 접근하는 방법 NestJS 강의를 듣던 도중 '프로퍼티'라는 단어를 듣게 되었다. 이전에도 몇 번 들어본적은 있지만..? 설명하라고 하면 정확히 설명하지도 못하고 떠오르는 이미지도 딱히 없었기 때문에 이건 모르는 개념이다! 생각하여 프로퍼티에 대해 정리하고자 한다. Property '어떤 값' '객체 내부의 속성' 이해를 돕기 위해 위의 사진에서 코드화를 해보자면 객체.너비 객체.높이 객체.색상 객체.무게 이렇게 Dot Notation으로도 접할 수 있다. Property의 접근 1) Dot Notation let fruits = { kind1 : 'apple', kind2 : 'banana', kind3 : 'lemon', cafe : { juice : 'fruits juice', city : 'seoul' } } ..
npm missing script "start" 에러가 계속 났던 이유 내가 개발을 하면서 제일 문제 있다고 생각하는 것이 바로 npm missing script 에러였다. 나름 에러를 찾아봐도 package.json에 script ~ start 이걸 추가해야 한다고 해서 추가하려고 했지만 이미 start와 관련된 script는 모두 추가가 되어있는 상황이었다. 근데 왜 계속 에러가 발생할까?에 대해 나름의 고민을 해봤다. 바로 터미널에서 프로젝트의 위치를 항상 이동시키지 않은 것이었다. 오늘 에러가 난 부분도 같았다. 1) 일단 터미널에서 처음에 nest new 키워드를 이용하여 nest_study_1_230314 프로젝트를 만들었다. 2) 그리고 그 안에 또 mkdir을 이용해서 nestjs-board-app 디렉토리를 생성해주었다. 3) cd nestjs-board-a..
TS2349: This expression is not callable. Type 'typeof cookieParser' has no call signatures. 문제 원인 nest 프로젝트를 clone해와서 내 로컬환경에서 실행하려고 보니, TS2349: This expression is not callable. Type 'typeof cookieParser' has no call signatures.와 같은 에러가 발생하였다. 문제 원인 정확한 원인은 못찾았으나, 아마 import * 에서 *을 할 때 인식이 잘 안되는건가?라는 추측을 했다. 문제 해결 문제 해결 이전 import * as cookieParser from 'cookie-parser'; 문제 해결 방법 import cookieParser from 'cookie-parser'; 위와 같이 바꾸어주었더니 해당 에러가 사라졌다.
[오류] npm run start시 npm ERR! code ENOENT npm ERR! syscall opennpm ERR! path /Users/사용자이름/package.json ~ 에러 해결방법 문제 상황 똑같은 프로젝트여도 intelliJ와 vscode 둘 다 발생하는 에러였다. npm run start(:dev)를 했는데 npm ERR! code ENOENTnpm ERR! syscall opennpm ERR! path /Users/사용자이름/package.json ~ 와 같은 에러가 터미널에 출력되었다. npm ERR! code ENOENT npm ERR! syscall open npm ERR! path /Users/사용자이름/package.json npm ERR! errno -2 npm ERR! enoent ENOENT: no such file or directory, open '/Users/사용자이름/package.json' npm ERR! enoent This is related to ..
npm으로 설치할때 --save 옵션은 무엇일까? nestJS에서 npm을 이용해서 postgreSQL을 이용한 typeorm을 설치하려고 했다. 터미널에 아래와 같이 입력하였다. npm install pg typeorm @nestjs/typeorm --save @nestjs/typeorm : Nest와 typeORM을 연결해주는 모듈 typeorm : typeORM 모듈 pg : Postgres 모듈 그런데 저 끝에 붙는 --save의 의미는 무엇일까? --save의 경우 아래의 형식으로 쓰인다. npm install --save --save의 의미 package.json의 dependency에 모듈을 추가한다는 의미이다. npm5 버전 이후부터는 --save 옵션을 쓰지 않아도 자동으로 추가된다고 한다. 가끔가다가 --save를 설치하는 방식을 쓰는..
콜백함수(Callback)란? (+ 일급객체,고차함수) JS를 보다보면 '콜백함수'라는 말을 정말 많이 들어보았을 것이다. 나 또한 콜백함수의 존재는 알았으나, 설명하라고 하면 제대로 하지 못하기에 이참에 콜백함수에 대해 제대로 정리해보려고 한다. 콜백함수 나중에 호출할 함수 전달받은 함수에서 처리될 일이 끝나고 호출하도록 한다. 콜백함수는 Node.js에서 너무나 중요한 개념이다. JS에서 함수는 일급객체(First-class-citizen) 일급객체란? 변수할당, 함수 간 인자 전달 및 반환이 가능해야 하는 특징을 만족해야 한다. // 객체 생성 및 변수에 담음 const a = { msg: "hello 1급 객체" } // 객체를 인자로 전달 가능 function f1(a) { const b = a; b.msg2 = "hello 1급 객체..!"; //..