44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
logger.middleware.ts 가 app.module에 적용이 되질않아서 질문드립니다.
제목과 동일한 내용으로 logger middleware를 작성하고 app module에 적용하였습니다. 그리고 재시작을 하여 적용 여부를 확인하려 했으나 적용이 되지않은것을 확인했습니다. 어떤부분을 놓치고 있는지 알고싶습니다. package.json { "name": "a-nest", "version": "0.0.1", "description": "", "author": "", "private": true, "license": "UNLICENSED", "scripts": { "prebuild": "rimraf dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev-backup": "nest start --watch", "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { "@nestjs/common": "^9.0.0", "@nestjs/config": "^2.3.0", "@nestjs/core": "^9.0.0", "@nestjs/platform-express": "^9.0.0", "axios": "^1.3.2", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.2.0" }, "devDependencies": { "@nestjs/cli": "^9.0.0", "@nestjs/schematics": "^9.0.0", "@nestjs/testing": "^9.0.0", "@types/express": "^4.17.13", "@types/jest": "28.1.8", "@types/node": "^16.0.0", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "jest": "28.1.3", "prettier": "^2.3.2", "run-script-webpack-plugin": "^0.1.1", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "28.0.8", "ts-loader": "^9.2.3", "ts-node": "^10.0.0", "tsconfig-paths": "4.1.0", "typescript": "^4.7.4", "webpack": "^5.75.0", "webpack-node-externals": "^3.0.0" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "**/*.(t|j)s" ], "coverageDirectory": "../coverage", "testEnvironment": "node" } } logger.middleware.ts import { Injectable, Logger, NestMiddleware } from '@nestjs/common'; import { NextFunction, Request, Response, response } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { private logger = new Logger('HTTP'); use(req: Request, res: Response, next: NextFunction): void { const { ip, method, originalUrl } = req; const userAgent = req.get('user-agent') || ''; response.on('finish', () => { const { statusCode } = res; const contentLength = res.get('content-type'); this.logger.log( `${method} ${originalUrl} ${statusCode} ${contentLength} - ${userAgent} ${ip}`, ); }); next(); } } app.module.ts import { MiddlewareConsumer, Module, NestModule, RequestMethod, } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ConfigModule, ConfigService } from '@nestjs/config'; import axios from 'axios'; import { LoggerMiddleware } from './middleware/logger.middleware'; const getEnv = async () => { // const response = await axios.get('비밀키를 요청하는 url'); // return response.data; }; const mode = process.env.NODE_ENV || 'development'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, load: [getEnv], envFilePath: `.env.${mode}`, }), ], controllers: [AppController], providers: [AppService, ConfigService], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer): any { consumer .apply(LoggerMiddleware) .forRoutes({ path: '*', method: RequestMethod.ALL }); } } nestjs log Info Webpack is building your sources... Entrypoint main 47.9 KiB = main.js 46.1 KiB 0.5051cca5f9ad96919687.hot-update.js 1.81 KiB webpack 5.75.0 compiled successfully in 63 ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [NestFactory] Starting Nest application... +6659ms [HMR] Updated modules: [HMR] - 10 [HMR] - 5 [HMR] - 3 [HMR] Update applied. [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [InstanceLoader] ConfigHostModule dependencies initialized +4ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [InstanceLoader] ConfigModule dependencies initialized +0ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [InstanceLoader] AppModule dependencies initialized +0ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [RoutesResolver] AppController {/}: +0ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [RouterExplorer] Mapped {/, GET} route +1ms [Nest] 36670 - 02/07/2023, 7:47:49 AM LOG [NestApplication] Nest application successfully started +0ms적용이 되지않아 생기는 질문이라 에러코드는 없어서 따로 첨부하지 않았습니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
@nestjs/core의 import 문제
우선 잘 되는것이 갑자기 안되는데 해결이 안되서 질문을 올립니다. 우선 제가 한 작업은 다음과 같습니다.7강의 typeorm 커넥션 맺기까지 완료 한 후 nest g res {service name}을 실행하여 테스트 했습니다폴더가 생기면서 service, module, controller가 생기는것을 확인 한 후 삭제했습니다.이후 yarn start:dev를 실행하면 아래와 같이 에러가 났습니다. yarn run v1.22.19warning ..\package.json: No license field$ nest build --webpack --webpackPath webpack-hmr.config.js --watchInfo Webpack is building your sources...ERROR in ./src/main.ts:1:29TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.> 1 | import { NestFactory } from '@nestjs/core';| ^^^^^^^^^^^^^^2 | import { DocumentBuilder } from '@nestjs/swagger';3 | import { SwaggerModule } from '@nestjs/swagger/dist';4 | import { AppModule } from './app.module';webpack 5.75.0 compiled with 1 error in 3426 msE:\web-message\dist\main.js:1834/******/ throw e;^Error: Cannot find module '@nestjs/core'Require stack:- E:\web-message\dist\main.jsat Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)at Module._load (node:internal/modules/cjs/loader:885:27)at Module.require (node:internal/modules/cjs/loader:1105:19)at require (node:internal/modules/cjs/helpers:103:18)at Object.<anonymous> (E:\web-message\dist\main.js:196:18)at __webpack_require__ (E:\web-message\dist\main.js:1831:33)at fn (E:\web-message\dist\main.js:1938:21)at Object.<anonymous> (E:\web-message\dist\main.js:166:16)at __webpack_require__ (E:\web-message\dist\main.js:1831:33)at E:\web-message\dist\main.js:2757:37 {code: 'MODULE_NOT_FOUND',requireStack: [ 'E:\\web-message\\dist\\main.js' ]}Node.js v18.13.0우선 warning ..\package.json: No license field 이 부분을 해결하기 위해 찾아보니..package.json의 private: true를 설정해 주라고 했지만, 이미 되어 있기 때문에 해결을 못했습니다. 그 다음ERROR in ./src/main.ts:1:29TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.> 1 | import { NestFactory } from '@nestjs/core';이 부분을 해결해 보기 위해 다음과 같은 작업을 했습니다.@nestjs/core의 삭제 및 재설치node_modules 폴더 삭제 및 재설치nestjs/core와 swagger의 충돌 문제가 있다는 얘기에 nestjs/core를 9.0.0으로 nestjs/common을 9.0.0으로, nestjs/platform-express를 9.0.0으로 수정하여 재설치 했으나 여전히 동일한 문제 발생 아래는 현재 저의 package.json입니다{ "name": "web-message", "version": "0.0.1", "private": true, "description": "", "author": "", "license": "UNLICENSED", "scripts": { "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev-backup": "nest start --watch", "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { "@nestjs/common": "^9.3.2", "@nestjs/config": "^2.3.0", "@nestjs/core": "^9.3.2", "@nestjs/platform-express": "^9.0.0", "@nestjs/swagger": "^6.1.4", "@nestjs/typeorm": "^9.0.1", "mariadb": "^3.0.2", "reflect-metadata": "^0.1.13", "rxjs": "^7.2.0", "swagger-ui-express": "^4.6.0", "typeorm": "^0.3.11", "typeorm-extension": "^2.4.2" }, "devDependencies": { "@nestjs/cli": "^9.0.0", "@nestjs/schematics": "^9.0.0", "@nestjs/testing": "^9.0.0", "@types/express": "^4.17.13", "@types/jest": "29.2.4", "@types/node": "18.11.18", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "jest": "29.3.1", "prettier": "^2.3.2", "run-script-webpack-plugin": "^0.1.1", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "29.0.3", "ts-loader": "^9.2.3", "ts-node": "^10.0.0", "tsconfig-paths": "4.1.1", "typeorm-model-generator": "^0.4.6", "typescript": "^4.7.4", "webpack": "^5.75.0", "webpack-cli": "^5.0.1", "webpack-node-externals": "^3.0.0", "webpack-pnp-externals": "^1.1.0" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "**/*.(t|j)s" ], "coverageDirectory": "../coverage", "testEnvironment": "node" } } 뭔가... 업데이트를 하면서 문제가 생긴것 같아 찾던 중nestjs@core와 swagger는 상호 작용하는 버전이 있다고 하던데 그것은nest 9.X 미만에서 그런 것이고 github에 올려주신 package.json에도 9.X이상의 nestjs를 쓰신것으로 확인하여 swagger와의 충돌 문제는 아닌 것으로 생각했습니다. 어떻게 해결하면 좋을까요~? 참 참고로nestjs : 9.1.8yarn: 1.22.19node: 18.13.0을 사용하고 있습니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Workspaces, Channels, Users 들간의 entity 에서 ManyToMany를 제거하는 방법
nest-typeorm 폴더에서 Workspaces, Channels, Users 들간의 entity 에서 ManyToMany 관계를 제거하고 OneToMany와 ManyToOne관계로 대신하는 코드가 있습니다. ManyToMany관계를 사용하지 않으려면 @ManyToMany 부분을 제거하고 field들만 남겨 놓으면 되나요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
serializeUser가 호출되지 않습니다.
아직은 DB를 붙이기 전인데요, passport-kakao에서 얻어온 ID를 session에 저장하고, SessionGuard를 만들어서, 여기까지는 동작합니다.https://github.com/youngkiu/nestjs-kakaologin/blob/main/src/auth/session.serializer.ts그런데, serializer에 breakpoint를 잡아도 호출되지 않습니다.도움 부탁드려요.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
빌드 배포 관련 질문 입니다.
안녕하세요. 제로초님빌드 관련 질문 하나 드리겠습니다.현재 express로 되어있던 백엔드 프로젝트를 nestjs로 변경하는 작업을 하고 있는데요.express 에서 monorepo를 활용해서 서버가 여러개 있고DB를 공통 모듈로 사용하고 있습니다.그래서 nest에서도 같은 방식으로 monorepo를 사용하고있는데요.대략 구조는 이렇습니다. apps 안에 각 서버들이 있고,libs 안에 entity, common 등 공통 모듈이 있습니다.Window 환경에서는 문제 없이 잘 실행되고,빌드도 문제 없이 잘 됩니다.문제는 Linux 환경에서 빌드시 오류가 발생하는데이런식으로 entity 모듈들을 찾지 못합니다. tsconfig.jsonpackage.jsonnest-cli.json이렇게 path 설정 되어 있습니다.왜 Linux에서만 빌드가 안되는 건지..구글링도 해보고 이것 저것 해봤는데 딱히 해결책을찾지 못해서 질문드립니다.감사합니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
웹스톰 ES lint " 양 따옴표로 자동 만들어지면서 빨간줄 오류 해결 법 문의
웹스톰 ES lint " 양 따옴표로 자동 만들어지는 오류 문제 해결 법 문의드려요 /import 부분이 자동으로 만들어지면서 "" 양따옴표로 만들어지면서 빨간줄 오류가 뜨는데, 이거 양따옴표 말고 홀따옴표로 설정 바꿀 수 있는 방법 있을까요?@Injectable() 만들었더니 자동으로 임포트 되면서 from 이후에 양따옴표로 만들어지네요구글링 하거나 웹스톰에서 설정 찾아봐도 어떻게 바꿔야 될지 몰라서 문의드려봅니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
module, controller, service, entity 생성 관계
module 안에 controller, service가 포함되는 것으로 이해하고 있습니다.예를 들어, 최초에 nest new 하면 user module/contoller/service 가 생성됩니다.이후, 새로운 기능에 대해 nest cli 로 module을 생성해야 할지? controller를 생성해야 할지, 혹은 service를 생성해야 할지 고민이 됩니다. (역할이 있겠지만, 새로운 service를 만들때, 반드시 새로운 module 기반에서 새로운 service를 만들어야 하는 것인지 등등)entity를 포함하여, 디렉토리 tree도 어떻게 가져가는게 좋은지 권고 사항 있을까요?module, controller, service의 관계에 대한 질문 같기도 하구요, 설계관점 일지도 모르겠습니다.새로운 화일(module, controller, service)을 생성할 때, 어떤 식으로 진행하는게 좋을지 문의 드립니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
트랜잭션에 관한 질문드립니다!
안녕하세요. 강의를 다시 보던 중 궁금한 점이 있어 질문드립니다! await getConnection().createQueryRunner()는 네스트 패턴이 아니라서 private connection:Connection을 써야한다고 말씀하셨는데 전자를 사용을 해도 상관은 없는 것인지 궁금합니다.(typeorm이 0.3 밑 버전입니다!) queryRunner.connect();가 없어도 정상적으로 코드가 작동하고 있는데 위 코드는 없어도 되는것인지, 써야한다면 무슨 동작을 하고 있는 것인지 궁금합니다!
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
typeorm 0.3버전에 아직 seed기능 안나온걸까요?
$ yarn run seed yarn run v1.22.17 $ ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts query: SELECT VERSION() AS `version` typeorm-extension seed Populate the database with an initial data set or generated data by a factory. Options: -h, --help Show help [boolean] -r, --root Path to the data-source / config file. [default: "/Users/teetee6/code_react/sleact/hback"] -c, --connection Name of the connection on which run a query. [deprecated] [default: "default"] -f, --config Name of the file with the data-source configuration. [deprecated] [default: "ormconfig"] -d, --dataSource Name of the file with the data-source. [default: "data-source"] -s, --seed Specify the seed class to run. -v, --version Show version number [boolean] TypeError: connection.createQueryBuilder is not a function at CreateInitialData.run (/Users/teetee6/code_react/sleact/hback/src/database/seeds/create-initial-data.ts:40:8) at /Users/teetee6/code_react/sleact/hback/node_modules/typeorm-extension/src/seeder/module.ts:125:18 at Generator.next (<anonymous>) at fulfilled (/Users/teetee6/code_react/sleact/hback/node_modules/typeorm-extension/dist/seeder/module.js:5:58) error Command failed with exit code 1.4달전 즈음의 공지사항에 typeorm 0.3버전이 Seeding이 아직 호환 안된다고 되있던데아직 안나온 거겟죠,, /database/seeds/create-initial-data.tsConnection이 deprecated되었다던데 제가 못찾은 새로운 seed방법이 나온걸까요 검색해봐도 안나오는데 아니면 없는걸까요export default class CreateInitialData implements Seeder { public async run(factory: Factory, connection: Connection): Promise<any> { await connection .createQueryBuilder() .insert() .into(Workspaces) .values([{ id: 1, name: 'Sleact', url: 'sleact' }]) .execute(); await connection .createQueryBuilder() .insert() .into(Channels) .values([{ id: 1, name: '일반', WorkspaceId: 1, private: false }]) .execute(); } }
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
passport 관련 질문드립니다
controller@ApiBody({ schema: { properties: { email: { type: 'string' }, password: { type: 'string' } } } }) @UseGuards(LocalAuthGuard) @Post('login') async login(@Req() req) { console.log('user controller'); return this.authService.login(req.user); }local.strategyconstructor(private authService: AuthService) { super(); } async validate(email: string, password: string): Promise<any> { console.log('local strategy'); console.log(`${email} , ${password}`); const user = await this.authService.validateUser(email, password); if (!user) { throw new UnauthorizedException(); } return user; }local-auth.guardasync canActivate(context: ExecutionContext): Promise<boolean> { console.log(context); const can = await super.canActivate(context); console.log('can', can); if (can) { const request = context.switchToHttp().getRequest(); console.log('login for cookie'); await super.logIn(request); } return true; }이렇게 구성되어있는데canActivate에서 401 에러가 나는데 이유를 잘모르겠습니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
강좌 이외 다국어 설정 질문입니다.
안녕하세요강의를 보면서 boilerplate를 만들어보고 있는데혹시 다국어 설정관련 좀 알려주실수있으신가요
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
매개변수 인식문제
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
핫리로딩 에러
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
express 버전도 똑같은데 뭐가 문제인지 모르겠네요.
HttpExceptionFilter 부분을 똑같이 적용해보고 있는데요. import { ExceptionFilter, Catch, ArgumentsHost, HttpException, } from '@nestjs/common'; import { Request, Response } from 'express'; @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse<Response>(); const httpStatus = exception.getStatus(); response.status(httpStatus).json({}); } }제프로젝트에서는 위처럼 status를 찾지를 못하는데요. 실행자체는 되지만, package.json에 있는 버전들도 똑같이 맞췄는데도 왜 저럴까요?? node_modules 를 제거후 다시 npm i 로 설치해도 똑같습니다. ㅠㅠ 아래는 제 package.json 의 버전들 입니다."dependencies": { "@nestjs/common": "^8.0.0", "@nestjs/core": "^8.0.0", "@nestjs/platform-express": "^8.0.0", "@nestjs/typeorm": "^8.0.3", "mysql2": "^2.3.3", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5", "typeorm": "^0.2.45" }, "devDependencies": { "@nestjs/cli": "^8.0.0", "@nestjs/schematics": "^8.0.0", "@nestjs/testing": "^8.0.0", "@types/express": "^4.17.13", "@types/jest": "27.4.1", "@types/node": "^16.0.0", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^27.2.5", "prettier": "^2.3.2", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "^27.0.3", "ts-loader": "^9.2.3", "ts-node": "^10.0.0", "tsconfig-paths": "^3.10.1", "typescript": "^4.3.5" },사실 그냥 nest 새로 만든 프로젝트에 "http-exception.filter.ts" <- 해당 파일을 복붙만 해도 위처럼 빨간줄이 그어져서 response의 status를 찾지못하네요. 1. nest new project 2. 해당 프로젝트 src 폴더에 "http-exception.filter.ts " 복붙3. status에 빨간줄 확인 위 빨간줄 무시하고 그냥 실행시켜도 문제없이 실행되긴합니다. 하지만, 그 원인을 알고싶네요! (또는 해결방법)제 생각에는 제로초님의 node_modules 에 설치된것과 제가 가진 node_modules 에서 차이가 있을꺼같은데, 버전까지 동일하게 한 후 npm i 를 했는데도 이런경우에는 어떻게 해결해야하는지 질문드립니다!
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
미들웨어 관련 질문드립니다
미들웨어에도 service를 di 시킬수있나요?di가 안되면 미들웨어에서 service 호출 방법이 있나요?
- 해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
로그인 관련 질문드립니다
강의에는 passport-local로 구현을 하셨는데jwt로 구현하려면 어떻게 해야하나요?
- 해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
typeorm select 관련 질문드립니다.
request에 프론트에서 넘어온 값이 있을때만 where절에 넣고 싶은데 어떻게 해야하나요?
- 해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
외부 DB연결 관련 질문드립니다.
안녕하세요A노트북에 mysql을 설치하고 B노트북에서 mysql이 설치가 된 db에 커넥션을 연결하고 싶은데 혹시 어떻게 해야하나요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
typeorm Setting 질문
안녕하세요? typeorm Setting 관련해서 질문이 있습니다.typeorm 0.3 기준으로 forRoot, forFeature, forRootAsync 차이가 혹시 어떻게 되는지 알 수 있을까요?
- 미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
안녕하세요! 예외처리 관련해서 질문드립니다!
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 안녕하세요. exception filter는 에러가 controller까지 전달이 되어야지 동작한다고 해주셨는데요! 일반적인 서비스 레이어의 코드라면 service 레이어에서 throw 한 에러가 controller까지 전달이 될 것 같은데요! trasaction 사용을 위해서 try / catch 문을 사용할 시 catch에서 잡힌 에러가 controller로 전달되지 않는 것을 확인했습니다! 이럴 경우에는 catch 에서 잡힌 에러를 그대로 다시 controller로 throw해주는 것이 괜찮은 방법인지 고민이 들어서 질문드립니다! 아래와 같이 처리하는 방법이 맞는지 혹은 조금 더 좋은 방법이 있는지 궁금합니다!example.service.tsasync testService() { const queryRunner = this.connection.createQueryRunner() .. 트랜잭션 스타트 try { ... 중략 } catch(error) { await queryRunner.rollback() throw error } }