DEVELOPMENT

DEVELOPMENT/JAVASCRIPT

tsconfig 설정에 대해

target 타입스크립트가 자바스크립트로 변환될 때, 그 버전을 지정함. 일반적으로 es2013 버전이나, 모던 브라우저 대부분이 es2015 이후의 버전을 지원하므로 조금 더 올려줘도 좋을 것 같음(서버의 경우에는 해당 없음). noImplicitAny true일 때, 암묵적 any 변수에 대한 오류를 발생시킴. strictNullCheck true일 때, null 및 undefined에 대한 처리를 엄격하게 관리. undefined 및 null에 대한 참조를 방지. https://www.typescriptlang.org/ko/docs/handbook/2/basic-types.html

DEVELOPMENT/NODEJS

NestJS :: param과 URI의 우선순위 문제

Nest.js에서 다음과 같은 경우 에러가 발생할 수 있다. @Get('/:testId') async testId(@Param('testId') testId: number) { return testId; } @Get('/test') async test() { } 이 경우 /test로 호출을 해도 /:testId에 요청이 간다. _testId_라는 변수는 Number 값이므로, NaN 에러가 발생하게 된다. 이런 문제는 익스프레스의 미들웨어가 순차적으로 실행되기 때문이다. 선언된 순서가 URI의 우선순위에 영향을 미친다. 즉 요청의 조건에 부합하는 두 개 이상의 api가 있을 때, 코드 내부에서 먼저 선언된 api가 호출되는 것이다. 때문에 /test가 위로 오게 되면, 이전과 같은 에러는 발생하지 않는다..

DEVELOPMENT/NODEJS

Node.js BASE64로 AWS S3에 이미지 업로드하기

base64 image 형식은 다음과 같다. data:image/png;base64,iVBORw0KGgoAAAAN...(여기에 버퍼 데이터)...이미지 형식을 파일이 아니라 base64로 받으면 다음 형식을 따르게 되는데, 이 상태로 putObject를 하면 이미지 변환에 실패한다 (실제 s3에 올리니 이렇게 올라갔다) 그래서 앞의 헤더? 부분을 제거할 필요가 있으므로, slice로 다음 내용을 지워주면 될 것 같다. await this.s3Uploader .putObject({ Bucket: this.configService.get('AWS_BUCKET_NAME'), Key: (디렉토리), Body: Buffer.from( brandData.brandImage.replace(/^data:..

DEVELOPMENT/NODEJS

cookie 데코레이터에서 JWT payload 추출하기

공식 문서에서 나오는 쿠키 데코레이터는 다음 내용과 같다. export const Cookies = createParamDecorator( (data: string, ctx: ExecutionContext) => { const request = ctx.switchToHttp().getRequest(); return data ? request.cookies?.[data] : request.cookies; }, ); 우리는 JWT 토큰을 쓰기 때문에 페이로드를 뽑아 데이터를 가져오는 데는 대략 다음과 같은 로직을 거쳐야 한다. AuthGuard에서 JWT를 한번 검증한다. Cookie 데코레이터에서 accessToken 이름의 쿠키를 뜯어온다. 컨트롤러에서 JwtService.verify를 사용해 스트링 값..

DEVELOPMENT/NODEJS

cookie 데코레이터에서 JWT payload 추출하기

공식 문서에서 나오는 쿠키 데코레이터는 다음 내용과 같다. export const Cookies = createParamDecorator( (data: string, ctx: ExecutionContext) => { const request = ctx.switchToHttp().getRequest(); return data ? request.cookies?.[data] : request.cookies; }, );우리는 JWT 토큰을 쓰기 때문에 페이로드를 뽑아 데이터를 가져오는 데는 대략 다음과 같은 로직을 거쳐야 한다. AuthGuard에서 JWT를 한번 검증한다. Cookie 데코레이터에서 accessToken 이름의 쿠키를 뜯어온다. 컨트롤러에서 JwtService.verify를 사용해 스트링 값으..

DEVELOPMENT/NODEJS

pm2 package.json 명령어 실행하기

yarn start는 pm2 start yarn --name "pm2에 등록될 앱 이름" -- run "start"와 같다. npm run start:dev는 pm2 start npm --name "pm2에 등록될 앱 이름" --run "start:dev"와 같다.

DEVELOPMENT/NODEJS

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module:

Nest.js로 만들어진 내부 프로젝트(유지보수 안 한지 좀 됨)를 실행하려고 보니 다음과 같은 에러가 출력되었다. Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: C:(내부 경로)\node_modules\true-myth\dist\index.js require() of ES modules is not supported. require() of C:(경로)\node_modules\true-myth\dist\index.js from C:(내가 작성한 코드).ts is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" whic..

DEVELOPMENT/JAVA - SPRINGBOOT

Caught Exception / Uncaught Exception

caught exception -> exception에 대한 처리가 필요한 exception catch를 통해 로직을 처리하거나 throw를 통해 요청한 곳으로 에러를 반환할 수 있음. uncaught exception -> exception에 대한 처리를 필요로 하지 않는 예외. runtimeException 등이 있음.

정민아
'DEVELOPMENT' 카테고리의 글 목록 (2 Page)