본문 바로가기
서버

nextjs 사용 시 typeorm 및 express config 설정

by eclipse7727 2021. 11. 25.
# 파일 트리
├───.next
├───components
├───dist
│   ├───config
│   ├───constants
│   ├───routes
│   ├───service
│   ├───typeorm
│   │   └───entity
│   │       └───Models
│   ├───types
│   └───utilities
├───pages
│   └───api
├───public
│   └───img
├───server
│   ├───config
│   ├───constants
│   ├───routes
│   ├───service
│   ├───typeorm
│   │   ├───entity
│   │   │   └───Models
│   │   └───migration
│   ├───types
│   └───utilities
└───styles

 

next js 에서 typeorm을 사용하려면 ormconfig.js 파일이 필요합니다.

// ormconfig.js
module.exports = {
   type: "mysql",
   host: "localhost",
   port: 3306,
   username: process.env.DATABASE_ID,
   password: process.env.DATABASE_PASSWORD,
   database: "typeorm_tutorial",
   synchronize: true, # <<production 모드에서는 끄고 사용할 것.>>
   logging: true,
   entities:
      [
      	 # production 모드일 경우 dist/typeorm/entity 에 있는 js 파일을 사용 
         process.env.NODE_ENV === 'production' ? 
            "dist/typeorm/entity/*{.ts,.js}" :
            "server/typeorm/entity/*{.ts,.js}"
      ],
   migrations: [
      "server/typeorm/migration/**/*{.ts,.js}"
   ],
   subscribers: [
      "server/typeorm/subscriber/**/*{.ts,.js}"
   ],
   cli: {
      "entitiesDir": "typeorm/entity",
      "migrationsDir": "typeorm/migration",
      "subscribersDir": "typeorm/subscriber"
   }
}

 

중간에 process.env 를 넣어 production 일 경우 경로를 다르게 설정했습니다.

# package.json
{
  ...
  "scripts": {
    "dev": "nodemon",
    "pro": "cross-env NODE_ENV=production next build && cross-env NODE_ENV=production tsc --project tsconfig.server.json && cross-env NODE_ENV=production PORT=3333 node ./dist/index.js",
    ...
  },
  "dependencies": {
    ...
  },
  "devDependencies": {
    ...
  }
}

tsconfig.json 과 tsconfig.server.json 두개를 사용합니다.

tsconfig.json은 next js 빌드할때 사용하고,

tsconfig.server.json은 tsconfig.json 설정값에 + server용 설정을 추가하여  사용합니다. (extends 옵션 사용)

# tsconfig.server.json
{
    "extends": "./tsconfig.json",
    "compilerOptions": {
      "lib": [
        "es5",
        "es6",
        "es2018"
      ],
      "module": "commonjs",
      "outDir": "dist",
      "noEmit": false,
      
      // 추가
      "target": "es5",
      "moduleResolution": "node",
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "sourceMap": true,
      "esModuleInterop":true
    },
    "include": ["server"]
  }

 

반응형

'서버' 카테고리의 다른 글

cross env  (0) 2021.10.18
node.js express httpOnly 설정  (0) 2021.10.17
윈도우에서 env port 사용하기  (0) 2021.10.16
ssh root 설정  (0) 2021.10.10

댓글