npm install -g win-node-env
npm install config --save
* default : 노출되도 되는 정보를 넣어준다.
*devlop : 개발환경에서 숨겨야하는 정보를 넣어준다.
-싱크로나이즈 : 컬럼추가시 db 재생성 옵션 -> 운영에서는 절대 사용금지
*production : 실제운영환경
* config 값 실제 사용하기
* main > port번호 주입
import * as config from 'config';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const serverConfig = config.get('server');
const port = serverConfig.port;
await app.listen(port);
Logger.log(`Application running on port ${port}`);
}
* configuration property is not defined 해결
* 에러 : config를 못읽어오는듯 하다.
* 해결 : 개발 환경변수를 이용하여 실행을 원할시,
npm run start:dev
무조건 위와같이 실행햐야한다.
인텔리제이의 화살표로 실행하면 안된다.
* 원인 : process.env.NODE_ENV의 값에 따라 해당 파일을 자동으로 찾아기때문!!
npm run start:dev -> dev.yaml을 찾아가고
npm run start -> produc.yml을 찾아가는 것이다!!
* typeorm 하드코딩 refactor
AWS에서 설정한값이없는경우, 환경변수값을 이용함.
import { TypeOrmModuleOptions } from "@nestjs/typeorm";
import * as config from 'config';
const dbConfig = config.get('db');
export const typeORMConfig : TypeOrmModuleOptions = {
type: dbConfig.type,
host: process.env.RDS_HOSTNAME || dbConfig.host, //AWS or local 에서 모두 작동하도록
port: process.env.RDS_PORT || dbConfig.port,
username: process.env.RDS_USERNAME || dbConfig.username,
password: process.env.RDS_PASSWORD || dbConfig.password,
database: process.env.RDS_DB_NAME || dbConfig.database,
entities: [__dirname + '/../**/*.entity.{js,ts}'], //엔티티 파일이 어디있는지(엔티티 이용해서 db table 생성함)
synchronize: dbConfig.synchronize //true -> app 재실행시, 수정된 컬럼의 테이블 drop후 재생성
}
* auth module refactor
@Module({
imports:[
PassportModule.register({
defaultStrategy: 'jwt',
}),
JwtModule.register({
secret:secret:process.env.JWT_SECRET || jwtConfig.secret,
signOptions:{
expiresIn: jwtConfig.expiresIn,
* jwtStrategy refactor
@Injectable() //어디에서나 사용가능토록
export class JwtStrategy extends PassportStrategy(Strategy){
constructor(
@InjectRepository(UserRepository) //db사용해야 하므로 주입
private userRepository : UserRepository
) {
super({
secretOrKey: process.env.JWT_SECRET || config.get('jwt').secret, //검증용 시크릿키, 모듈에서 설정해준거랑 같은값
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken() //Bearer토큰 타입으로 올거임
})
}
* 주의사항
그리고 마지막으로 중요한 것은 gihub에 올릴 때 config 폴더에 있는 내용들이
올라가면 안되므로 gitignore에 추가해줘야 한다.
## 파일 무시
test.txt
## 다음과 같은 확장자는 전체 무시
*.text
*.exe
*.zip
## 폴더 무시
test/
* github 캐시 지우는법
제외되어야할 파일 또는 폴더를 이미 commit을 해버린 상황이라면
아래 명령어를 통해 cache를 지워줘야 한다.
## 파일 이라면
git rm --cached test.txt
## 전체파일 이라면
git rm --cached *.txt
## 폴더 라면
git rm --cached test/ -r
'JS > Nest.js' 카테고리의 다른 글
[Nest] typeorm 설정, 모듈생성, 의존성주입, No metadata for "PostsModel" was found 문제해결 (0) | 2024.09.17 |
---|---|
[Nest] Dependency Injection 의존성 주입 (0) | 2024.09.17 |
[Nest JS] 로그 구현 (0) | 2024.08.19 |
[Nest JS] 자신이 생성한 게시물만 삭제 (0) | 2024.08.19 |
[Nest JS] 특정 유저의 게시물 가져오기 (0) | 2024.08.19 |