Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension. 발생 시

개발/TypeScript 2022. 4. 11. 08:20

node src/~.ts를 실행했을 때 아래와 같이 Warning과 함께 SyntaxError: Cannot use import statement outside a module과 같이 에러가 발생하였다. package.json에 type이 "module"로 지정되어 있지 않아서 node로 src안의 ts 파일을 개별 실행시킬시 때 위와 같이 출력되었다. 위와 같이 package.json에 type: module을 추가하고 ts 파일을 실행 시 정상적으로 실행되었다.

Article Thumbnail
org.hibernate.tool.schema.spi.CommandAcception.... Error executing DDL 에러 발생 시

개발/Spring 2022. 4. 4. 08:20

Spring Application을 실행시켰을 때, $ org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL 와 같은 에러가 발생하였다. 해당 에러는 사용하는 DataBase의 예약어와 엔티티의 이름이 겹쳐서 발생하는 예외이다. 위처럼 @Table 어노테이션안에 테이블의 이름을 직접 지정하는 것을 통해 해당 에러를 해결하였다.

Article Thumbnail
[NestJS & React] 유저 동접 방지 구현

개발/NestJS 2022. 3. 24. 08:20

유저 동시 접속 방지 기능을 개발이 완료된 서비스에 추가하는 방식으로 구현해야될 일이 생겼다. 해당 서비스의 경우, 로그인, 유저 관리를 세션/쿠키 방식이 아닌 JWT 방식으로 관리하고 있었기 때문에 동시 접속 방지를 websocket을 활용하여 구현하였다. 대략 어떻게 동시접속 방지를 구현할지에 대해 생각해보면 순서가 다음처럼 되었다. 유저가 로그인할 때, 토큰을 프론트로 전송함과 동시에 socket connection을 연다. 해당 유저가 로그아웃 할때까지 connection을 유지한다. 다른 클라이언트에서 해당 유저가 접속하면 기존의 connection을 끊고, 새로 접속된 클라이언트에서만 로그인시킨다. 위와 같은 방식으로 큰 틀을 잡고 구현하였다. 기존의 사용하던 NestJS가 v7이고 socke..

MS-SQL 랜덤 row 가져오기

개발/TypeORM 2022. 3. 17. 08:20

프로젝트를 진행할 때 TypeORM + PostgreSQL를 사용하여 개발하였는데 TypeORM + MS SQL을 사용해야하는 일이 생겼다. 기존에 PostgreSQL에서 테이블에서 랜덤으로 row를 뽑아 올 때는 PostgreSQL에서 random()으로 랜덤 함수를 지원해서 TypeORM createQueryBuilder에서 .getMany()나 .getOne() 앞에 .orderBy('random()')을 추가해서 ORDERBY random() 쿼리를 데이터베이스로 날렸었다. 아쉽게도 MS SQL에는 random과 같은 랜덤 함수를 지원하지 않았다. 대신 uuid와 같이 unique한 난수를 생성하는 함수인 newId()를 지원해서 해당 함수를 활용해서 랜덤 함수처럼 사용하여 랜덤 row를 가져올 ..

Article Thumbnail