$ npm install typeorm # typeorm 설치 명령어
TypeORM 삭제 → mysql/mysql2 설치 → TypeORM 드라이버 재설치
절차대로 다시 설치 과정을 진행한다.$ npm uninstall typeorm # typeorm 삭제 명령어
$ npm install mysql # mysql 설치 명령어
$ npm install mysql2 # mysql2 설치 명령어
.env 파일 내부에 다양한 TYPEORM 환경 변수 정보를 저장한 후 사용하는 방법을 대표 예시는 아래와 같다.
// .env
TYPEORM_CONNECTION = mysql
TYPEORM_HOST = 127.0.0.1
TYPEORM_USERNAME = root
TYPEORM_PASSWORD = myPassword
TYPEORM_DATABASE = myDB
TYPEORM_PORT = 3306
TYPEORM_LOGGING =TRUE
// app.js
const dotenv = require("dotenv")
dotenv.config()
DataSource
모듈로 불러온다.createConnection
메소드는 더이상 TypeORM에서 지원하지 않는다는 것을 참고.(버전 0.3.0 부터 deprecated 되었음)// app.js
const { DataSource } = require('typeorm');
DataSource
명령어를 통해서 db와의 커넥션 환경 세팅을 완료한다. 그리고 initialize()
메소드를 통해 실제 연결을 완료한다.// app.js
const myDataSource = new DataSource({
type: process.env.TYPEORM_CONNECTION,
host: process.env.TYPEORM_HOST,
port: process.env.TYPEORM_PORT,
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE
})
myDataSource.initialize()
.then(() => {
console.log("Data Source has been initialized!")
})
여기에서 사용된 process
객체는 node.js에서 기본으로 설정되는 글로벌 객체로써 별도의 require 호출 없이 언제, 어디서든지 모든 모듈에서 접근이 가능한 객체이다. 별도의 설정없이 node 설치 후, init 및 run 을 실행할 때 접근이 가능하며 node.js 프로그램의 런타임 환경과 관련된 다양한 정보들을 담고 있는 객체이다.
위에 작성된 코드는 우리가 원하는 TYPEORM 관련 환경 변수들을 환경 변수를 선언한 env 객체에 접근하여 끌어온다.
동영상을 따라가면서 코드를 작성하고 서버를 실행하려 하였으나 자꾸 error가 떠서 약 10분간 구글링을 해보았다.
처음엔 mysql2도 설치해보고, 변수 설정을 바꾸어보기도 하였는데 그래도 터미널이 자꾸만 이상한 문구를 토해냈다...
그 후 "UnhandledPromiseRejectionWarning"에 관한 내용을 검색하였고, 이 링크를 찾아내었다.
async-await에서 에러 핸들링을 안 해주면 생기는 문제이며, 이는 .catch()
를 작성하면 해결되는 문제였다.!!!!!!!
// app.js
myDataSource
.initialize()
.then(() => {
console.log("Data Source has been initialized!");
})
.catch(() => {
console.log("Promise Rejected!");
});
아무튼 문제 해결 완료!