해결된 질문
작성
·
406
0
안녕하세요. 포트 3000 에서는 사이트도 잘 뜨고 로깅도 잘 되고 있습니다.
다만, 환경변수 파일에 추가한 3030 포트로는 열리지 않고 있습니다. 어디 부분을 확인해봐야 되나요??
.env
SECRET=제로초강의
PORT=3030
main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
declare const module: any;
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const port = process.env.PORT || 3000;
await app.listen(3000);
console.log(`listening on port ${port}`);
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => app.close());
}
}
bootstrap();
app.service.ts
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
// 서비스의 경우, 요청과 응답에 대해서는 모르기 때문에 독립적이다.
// 즉, 로직을 작성하는 공간이라고 생각하면 된다.
@Injectable()
export class AppService {
constructor(private readonly configService: ConfigService) {}
getHello(): string {
// process.env.PORT보단 get으로 가져오는 것이 좋다.
// return this.configService.get('SECRET');
return process.env.SECRET;
}
}
app.module.ts
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { LoggerMiddleware } from './middlewares/logger.middleware';
@Module({
imports: [ConfigModule.forRoot()],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer): any {
consumer.apply(LoggerMiddleware).forRoutes('*');
}
}
logger.moddleware.ts
import { Injectable, Logger, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
private logger = new Logger('HTTP');
use(request: Request, response: Response, next: NextFunction): void {
const { ip, method, originalUrl } = request;
const userAgent = request.get('user-agent') || '';
response.on('finish', () => {
const { statusCode } = response;
const contentLenth = response.get('content-length');
// 만약 context가 필요가 없을 경우 Logger.log가 console.log 대체이다.
this.logger.log(
`${method} ${originalUrl} ${statusCode} ${contentLenth} - ${userAgent} ${ip}`,
);
});
next();
}
}
아..! 해결되었습니다. 감사합니다.