npm install sequelize-cli sequelize mysql2 typescript
기본적인 모듈 설치
dotenv 사용시
npm i dotenv @types/dotenv
이것도 설치
작업 디렉토리에서
sequelize-cli init
작성
config, model, migration, seeders 폴더 생성됨
import * as dotenv from "dotenv"
dotenv.config();
export const config = {
test: {
username: process.env.DBHOST,
password: process.env.DBPWD,
database: `${process.env.DB}_test`,
host: process.env.DOMAIN,
port : process.env.PORT,
dialect: "mysql"
},
}
이런식으로 config.json을 config.ts로 수정
'use strict';
import { Sequelize } from "sequelize";
import { config } from "../config/config";
export const sequelize = new Sequelize(
config.test.database,
config.test.username as string,
config.test.password,
{
host:config.test.host,
dialect: 'mysql'
},
)
이런식으로 index.json을 index.ts로 수정
import express from "express";
import router from "./routes/index"
import cors from "cors"
import { sequelize } from "./models/index";
import * as dotenv from "dotenv"
dotenv.config();
const app = express();
app.use(cors())
app.use("/", router)
app.listen( async () => {
try{
await sequelize.authenticate()
.then(() => {
console.log("DB connection success")
})
console.log(`server is running on ${process.env.ORIGIN}:${process.env.PORT}`)
}
catch (err) {
console.error(err);
console.log("Server running failed")
}
});
대략 이런식으로 연결 확인할 수 있게 변경
해당 작업 진행과정중 dotenv내 환경변수 읽지 못하는 문제 발생
해결은 .env 위치를 package.json이 위치한 레벨로 이동하여 해결
다른곳에 있으면 경로 직접 찍어서 잡아주려 해도 잘 되지 않았음
뭔가 해결할 방안이 있을것 같으나 찾지는 못하고 위와같이 실행하여 해결함