[TSexpress] typeORM 설정하기

🪐 C:on·2022년 1월 3일
0

TS-Express

목록 보기
2/4

typeORM 설치 및 설정

  • npm을 사용해서 typeorm, reflect-metadata, mysql2 를 설치한다.

mysql과 mysql2의 차이점
mysql은 MySQL 8.0 버전의 프로토콜에 맞는 인증요청을 보내지 못한다. mysql2는 가능하다.

  • cli에서 typeorm 명령어를 사용할 수 있도록 npm install typeorm -g 를 입력한다.
  • 이미 프로젝트가 설정되어 있는 경우 typeorm init --database mysql2 을 입력하여 ormconfig.json을 생성한다.

tsconfig.json

{
  "compilerOptions": {
    "lib": ["es5", "es6", "ES2018"],
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist",
    "rootDir": "src",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "noEmitOnError": true,
    "noUnusedLocals": true
  }
}

주의할 점

  • tsconfig.json설정이 모두 덮어씌워진다. 그래서 이전에 설정해주는 것은 무의미하다.
  • esModuleInteroptrue로 설정해줘야 ES모듈을 사용할 수 있다.
  • 커맨드창에서는 오류가 생기면 해결법을 추천해주는데 이걸 쓰는 동안 발생한 3개의 오류는 몽고db 문제였다.
    • lib에 es2018이상을 쓰라는 reconmmend를 받았다. recommend에 따라 추가를 해서 문제를 해결했다.

옵션

  • module은 모듈방식을 정하는 것인데 프론트엔드에서 사용할 때는 ES2015를 사용할 수 있겠지만 백엔드에서는 node에 commonJS모듈이 많아서 commonJS로 사용해준다.
  • typeorm에 .d.ts 오류가 발생해서 skipLibCheck를 true로 설정함으로써 lib 체킹을 무시했다. 스택오버플로우에서 타입스크립트를 3.6까지 다운그레이드 시키는 방법도 찾았는데 이 방법이 더 간단해서 사용했다.

ormconfig.json

typeorm을 init하면 ormconfig.json이 생성된다.
typrorm을 연결하기 위한 옵션들을 기입해준다.

보안을 위해서 .gitignore에 ormconfig.json을 작성해준다.

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "1234",
  "database": "slimeworld",
  "synchronize": true,
  "logging": true,
  "entities": ["dist/data/**/*.{js,ts}"],
  "migrations": ["dist/migration/**/*.{js,ts}"],
  "subscribers": ["dist/subscriber/**/*.{js,ts}"]
}

주의할 점
1. mysql 모듈은 오류가 발생하니 mysql2모듈을 다운받아야 하는데 ormconfig.json에서 typemysql2를 적으면 안된다! typemysql만 기입할 수 있다.
2. 공식문서 예제에서는 entitiessrc로 되어 있는데 ts-node로 바로 실행하면 오류가 없지만 tsc로 변환 후 노드를 실행하는 경우에는 오류가 발생한다. outDir로 정의한 폴더를 기입해준다. 내 경우에는 dist로 바꿔주었다.

0개의 댓글