본문 바로가기

Learning/NestJS

NestJS Authentication(3) 환경변수

41살 개발자로 이직이 가능한 나이는 지난것 같은...

토이 프로잭트를 한다고 하니 주변분들이 그거 돈되나 라고 물어 보신다.. 훗...

요 몇일간 현타가 왔다....

내가 지금 새롭게 배우고 새로운게 나오면 새롭게 배우는것은 돈 때문이 아니라

내 만족이며 나중에 딸중에 한명은 나처럼 개발자가 된다고 하면

머릿 속의 지식이 아닌 이 블로그와 깃과 소스를 자랑스럽게 줄수 있을꺼 같은 ...

머 그런??? 훗..

다시금 마음을 잡고 토이 프로젝트를 진행 하자.

 

TypeOrm의 설정 파일을 현재는 root폴터에 ormconfig.json 에 설정을 하고 있다.

{
  "type": "mysql",
  "host": "localhost",
  "port": 3000,
  "username": "username",
  "password": "password",
  "database": "database",
  "entities": ["dist/**/*.entity.js"],
  "logging": true,
  "synchronize": false
}

이 TypeOrm의 설정 파일을 app.module에 넣고 중요한 부분은 환경변수로 처리하는 것으로 변경을 하자

 

우선 git에 push를 할 때 환경변수를 셋팅하는 env파일은 추가를 하면 안되니.

프로젝트 폴더에서 .gitignore 파일에 env 관련 하여 추가를 한다.

아래는 현재 프로젝트의 .gitignore 파일 내용이다.

# compiled output
/dist
/node_modules

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# ENV
*.env
*.dev
*.env.*
*.env*

# OS
.DS_Store

# Tests
/coverage
/.nyc_output

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

폴더를 지정할수도 있고 

파일을 지정할 수 있다. * 특문은 이하 모든것? 이렇게 생각하면 된다.

 

재대로 env파일을 포함을 안하는지 파일을 수정을 하고 git add . 을 실행 해 본다.

F:\dittybox\study\nestjs\study-nestjs>git add .
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in src/app.module.ts.
The file will have its original line endings in your working directory

F:\dittybox\study\nestjs\study-nestjs>

 

또 LF will be replaced by CRLF in .gitignore 에러 이다.

이유는 git이 행이 넘어가는 부분의 처리를 윈도우식인지 리눅스인지 몰라서 이러는 것이다.

해결방법은 

leannet.tistory.com/66

 

warning: LF will be replaced by CRLF in package-lock.json.

윈도우 사용자 git config --global core.autocrlf true 행을 나누는 방식이 윈도우와 리눅스의 방법이 달라서 git에서 나는 오류

leannet.tistory.com

이렇게 하면 된다.

나는 글로벌로 매일 저걸 적용하는데 할때마다 문제가 난다.

먼가 이유가 있는거 같은데 이부분은 작업하는데 약간의 거슬림이니

차후에 구글링으로 해결해고 블로그에 올리는것으로 하자.

 

.gitignore에 env를 추가를 하였는데 add . 을 하면

env를 계속 추가를 하고 있다.

구글링으로 폭풍 검색을 시작.....

git rm -r --cached . 

을 실행 하고 다시 add를 해보자

성공 하였다 

위 cached를 다 지우고 다시 git add . 하니

git에 올라가 있는 .env 파일이 delete 가 된다고 뜨고 나머지는 추가되었다

그 상태에서 push를 하니 env는 깃에서 삭제 되었고 env를 수정을 하여도 올라가지 않았다

쿨~ 옷~

 

자 DB관련 env 셋팅을 하고 app.module 파일에 추가를 하자.

        TypeOrmModule.forRoot({
            type: process.env.DATABASE_TYPE,
            host: process.env.DATABASE_HOST,
            port: process.env.DATABASE_PORT,
            username: process.env.DATABASE_USERNAME,
            password: process.env.DATABASE_PASSWORD,
            database: process.env.DATABASE_NAME,
            entities: process.env.DATABASE_ENTITIES,
            connectTimeout: process.env.CONNECT_TIMEOUT,
            logging: true,
            synchronize: false
            })],

에러가 발생한다.

환경변수는 기본적으로 전부 string으로 인식이 되다 보니 type, entities, logging 등 string이 아닌 설정 부분은 전부 에러가 난다.

그래서 각각 설정 값이 가능하도록 


        TypeOrmModule.forRoot({
            type: "mariadb",
            host: process.env.DATABASE_HOST,
            port: Number(process.env.DATABASE_PORT),
            username: process.env.DATABASE_USERNAME,
            password: process.env.DATABASE_PASSWORD,
            database: process.env.DATABASE_NAME,
            entities: [__dirname + '/**/*.entity{.ts,.js}'],
            connectTimeout: Number(process.env.CONNECT_TIMEOUT),
            logging: true,
            synchronize: false
            })],

할려고 하였으나.... 재대로 적용이 안되서 하드코딩 하기로 결정. 쩝..

 

서비스를 테스트 해보았다.

잘된다~

 

다음 블로그 글은 다시 인증 부분으로 돌아가겠다.

 

오늘은 여기 까지~

 

이전글

leannet.tistory.com/71

 

NestJS Authentication(2) jwt+환경변수

하루 지났는데 가물가물... 우선 공식 문서에서 local-auth.guard.ts import { Injectable } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; @Injectable() export class LocalAuthGuard..

leannet.tistory.com

 

'Learning > NestJS' 카테고리의 다른 글

INSOMNIA 사용하여 Header에 token 사용  (0) 2021.01.12
NestJS Authentication(4) jwt(수정)  (0) 2021.01.11
NestJS Authentication(2) jwt+환경변수  (0) 2021.01.06
NestJS Authentication(1) Login  (0) 2021.01.03
DTO (Data Transfer Object)  (0) 2021.01.02