typescript, sequelize, mysql 연결

박종혁·2021년 8월 24일
1

시작

npm install sequelize-cli sequelize mysql2 typescript
기본적인 모듈 설치

dotenv 사용시
npm i dotenv @types/dotenv
이것도 설치

sequelize-cli

작업 디렉토리에서

sequelize-cli init

작성

config, model, migration, seeders 폴더 생성됨

config 폴더

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로 수정

model 폴더

'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로 수정

src내의 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")
    }
});

대략 이런식으로 연결 확인할 수 있게 변경

.env 파일 경로 문제

해당 작업 진행과정중 dotenv내 환경변수 읽지 못하는 문제 발생

해결은 .env 위치를 package.json이 위치한 레벨로 이동하여 해결

다른곳에 있으면 경로 직접 찍어서 잡아주려 해도 잘 되지 않았음
뭔가 해결할 방안이 있을것 같으나 찾지는 못하고 위와같이 실행하여 해결함

Profit!

profile
메모 메모

0개의 댓글