npm i @nestjs/config joi
import { registerAs } from '@nestjs/config';
export default registerAs('app', () => ({
okky_id: process.env.OKKY_ID,
okky_password: process.env.OKKY_PASSWORD,
}));
import Joi from 'joi';
export const validationSchema = Joi.object({
OKKY_ID: Joi.string().required(),
OKKY_PASSWORD: Joi.string().required(),
});
import { Module } from '@nestjs/common';
import appConfig from './confg';
import { validationSchema } from './validation.schema';
import { ConfigModule as NestConfigModule } from '@nestjs/config';
@Module({
imports: [
NestConfigModule.forRoot({
envFilePath: process.env.NODE_ENV === 'development' ? '.env.dev' : '.env',
load: [appConfig],
isGlobal: true,
validationSchema,
}),
],
})
export class ConfigModule {}
import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { ConfigModule } from 'src/config/config.module';
@Module({
imports: [ConfigModule],
providers: [AuthService],
exports: [AuthService],
})
export class AuthModule {}
import { Injectable, Logger } from '@nestjs/common';
import puppeteer from 'puppeteer';
import { OKKY_LOGIN_URL } from 'src/constants/url';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class AuthService {
private readonly logger = new Logger(AuthService.name);
constructor(private readonly configService: ConfigService) {}
async login() {
try {
console.log(this.configService.get('app.okky_id'));
console.log(this.configService.get('app.okky_password'));
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto(OKKY_LOGIN_URL);
await page.type('#user-id', this.configService.get('app.okky_id'));
await page.type('#password', this.configService.get('app.okky_password'));
await page.click('submit');
// await browser.close();
} catch (e) {
this.logger.error('로그인 중 에러 발생', e);
throw e;
}
}
}
config.ts에서 이름을 app으로 지정했기 때문에 app.으로 시작함. 여러 종류로 만들 수 있음