diff --git a/lib/interceptors/grpc-to-http.interceptor.ts b/lib/interceptors/grpc-to-http.interceptor.ts index 5d741a7..b3219d8 100644 --- a/lib/interceptors/grpc-to-http.interceptor.ts +++ b/lib/interceptors/grpc-to-http.interceptor.ts @@ -29,18 +29,34 @@ export class GrpcToHttpInterceptor implements NestInterceptor { ) return throwError(() => err); - const exception = JSON.parse(err.details) as { - error: string | object; - type: string; - exceptionName: string; - }; + const statusCode = + HTTP_CODE_FROM_GRPC[err.code] || HttpStatus.INTERNAL_SERVER_ERROR; + + let exception: { exceptionName: any; error: any; type?: string }; + try { + exception = JSON.parse(err.details) as { + error: string | object; + type: string; + exceptionName: string; + }; + } catch (parseError) { + return throwError( + () => + new HttpException( + { + message: err.details, + statusCode, + error: HttpStatus[statusCode], + }, + statusCode, + { cause: err }, + ), + ); + } if (exception.exceptionName !== RpcException.name) return throwError(() => err); - const statusCode = - HTTP_CODE_FROM_GRPC[err.code] || HttpStatus.INTERNAL_SERVER_ERROR; - return throwError( () => new HttpException(