[NestJS] Joi: Cannot read properties of object undefined
NestJS Joi 설치
$ npm install --save joi
// app.module.ts
import Joi from 'joi';
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: '.env',
isGlobal: true,
validationSchema: Joi.object({
NODE_PORT: Joi.string().required(),
SESSION_ID: Joi.string().required(),
COOKIE_SECRET: Joi.string().required(),
}),
}),
MongooseModule.forRootAsync({
useFactory: () => ({
uri: process.env.MONGODB_URI,
}),
}),
...
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggerMiddleware).forRoutes();
}
}
[에러] 발생에러
validationSchema: Joi.object({ ...
TypeError: Cannot read properties of undefined (reading 'object')
[해결방안 1]
tsconfig.json에서 "esModuleInterop" : true
ES6 모듈사양을 준수하여 CommonJS 모듈을 가져올 수 있게 한다.
// tsconfig.json
{
"compilerOptions": {
...
"esModuleInterop": true
},
}
그러나 세션을 읽을 수 없다는 에러가 발생했다.. ㅠㅠ
[에러]
session({
^
TypeError: session is not a function
[참고]
Joi getting validationSchema: Joi.object() error
After installing joi on nestjs framework i'm trying to validate two property by joi something like: import Joi from 'joi'; ... ConfigModule.forRoot({ isGlobal: true, validationSchema: Joi.o...
stackoverflow.com
esModuleInterop 속성을 이용한 Import 에러 해결
함수의 테스트를 진행하다, import difference from 'lodash/difference'; difference(); 의 구문으로 인해 TypeError: difference_1.default is not a function 라는 에러가 발생한 것을 확인했습니다. 이번 포스팅에서는 관련
pewww.tistory.com
[해결 방안2] import 문을 수정했다.
import * as Joi from 'joi';
TypeError: Cannot read property 'object' of undefined · Issue #4975 · nestjs/nest
validation.pipe.ts import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException, } from "@nestjs/common"; @Injectable() export class JoiValidationPipe implements PipeTransfor...
github.com