묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
그래프큐엘로 구글 로그인 질문있습니다.
현재 아래와 같은 에러를 마주쳤습니다.my-server_1 | TypeError: res.setHeader is not a function my-server_1 | at JwtGoogleStrategy.strategy.redirect (/myFolder/node_modules/passport/lib/middleware/authenticate.js:340:13) my-server_1 | at stored (/myFolder/node_modules/passport-oauth2/lib/strategy.js:285:14) my-server_1 | at NullStore.store (/myFolder/node_modules/passport-oauth2/lib/state/null.js:5:3) my-server_1 | at JwtGoogleStrategy.OAuth2Strategy.authenticate (/myFolder/node_modules/passport-oauth2/lib/strategy.js:297:28) my-server_1 | at attempt (/myFolder/node_modules/passport/lib/middleware/authenticate.js:378:16) my-server_1 | at authenticate (/myFolder/node_modules/passport/lib/middleware/authenticate.js:379:7) my-server_1 | at /myFolder/node_modules/@nestjs/passport/dist/auth.guard.js:88:3 my-server_1 | at new Promise (<anonymous>) my-server_1 | at /myFolder/node_modules/@nestjs/passport/dist/auth.guard.js:80:83 my-server_1 | at GqlAuthGuard.canActivate (/myFolder/node_modules/@nestjs/passport/dist/auth.guard.js:44:32)제 코드는 다음과 같습니다.auth.resulver.ts 파일의 일부분입니다. @UseGuards(GqlAuthGuard('google')) @Mutation(() => String) loginGoogle( @Context() context: IContext, // ): void { console.log('context::', context); }그래프큐엘 가드 부분입니다.import { ExecutionContext } from '@nestjs/common'; import { GqlExecutionContext } from '@nestjs/graphql'; import { AuthGuard } from '@nestjs/passport'; // graphql 인가 가드 설정 export const GqlAuthGuard = (name: string) => { return class GqlAuthGuard extends AuthGuard(name) { getRequest(context: ExecutionContext) { const gqlContext = GqlExecutionContext.create(context); return gqlContext.getContext().req; } }; }; jwt google 부분입니다.import { PassportStrategy } from '@nestjs/passport'; import { Strategy } from 'passport-google-oauth20'; export class JwtGoogleStrategy extends PassportStrategy(Strategy, 'google') { constructor() { super({ clientID: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, callbackURL: 'http://localhost:3001/login', scope: ['email', 'profile'], }); } validate(accessToken, profile) { console.log('profile:', profile); return { ... }; } } 혹시 제가 실수한 부분이있을까요?
-
해결됨[유니티 게임 개발] 핵심 기술과 디자인 패턴
override, virtual 변수는 어떻게 하나요?
상속 강의에서 'override - 자식 클래스에서 부모 클래스의 virtual로 정의된 함수 혹은 변수를 변경을 진행하기 위해서 사용'라고 적혀 있던데요. 강의에선 함수만 예로 보여주고 변수는 안보여줘서 찾아보니까 잘 안나오네요.override, virtual 키워드로 검색하면 함수 내용만 나와요. 변수 예도 알려주시면 감사하겠습니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
PickType
현재 PickType 활용하기를 듣고있습니다.위에서 PickType 은 값을 반환을 하고 Pick 은 타입을 반환한다고 말씀을 주셨는데요.PickType 이 값을 반환 한다는 말씀이실제로 어떤 값을 반환하는것이 아니라 request dto 역할로 데이터가 key : value 로 들어오니까 단순 타입이 아니라 값을 받기때문에 값을 반환한다 라고 이해를 해야할까요 ??
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
UTC 시간대 변경
timezone: 'Asia/Seoul', // 한국 시간대 설정로 변경하거나timezone: '+09:00', // 한국 시간대 설정로 변경을 해도 시간대가 UTC 시간으로 저장이 되는것 같아요 !한번 데이터베이스로 가서 select now() 로 찍어보니까 application 단에 작성한 timezone 과 다르게 utc 시간대로 설정되어있어서 그런것 같더라구요 디비의 시간대를 변경하면 되긴한데 , 그러면 취지와 맞지 않는것 같아서 어떻게 하면 될까요 ?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
custom 파이프라인
custom 파이프 챕터를 듣고있습니다.위의 강의에서 8 자 보다 긴 비밀번호는 throw new 반환을 적용한다고 했을때 파이프 라인으로 적용해도 될것같고 , request dto 로 적용할수있을것 같단 생각을 했습니다.이럴때 어디서 적용할지에 대한 기준치는 어떻게 판별하시나요 ??
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Authorization 과 Headers
안녕하세요 ㅎ강의 잘 보고 있습니다.강의에서 access token 과 refresh token 을 사용하게 될때postman 에서 Headers 탭을 이용하셨는데 이유가 있을까요 ?옆에 Authorization 을 사용하지않고 Headers 를 사용하신 이유가 궁금합니다. !
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
[섹션18]AccessTokenGuard 적용하기 질문
post Controller > postPosts에 @UseGuard(AccessTokenGuard) 할 경우 디펜던시 오류가 납니다.앞에 강의 중에 대처법을 보고 따라 해봐도 잘 안되는데,어디어디에 무엇을 작성해야할지 모르겠습니다ㅠ///////////////////////////앞에 강의 차분하게 다시 보면서 해결했습니다,
-
해결됨[유니티 게임 개발] 핵심 기술과 디자인 패턴
CSV 강의 스크립트 파일
스크립트 파일은 어디서 받을 수 있을까요?
-
해결됨[유니티 게임 개발] 핵심 기술과 디자인 패턴
[3분 17초] 2차원 배열 구조 그림 예시
행과 열을 반대로 그리신 것 같아요.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
도커 설치가 잘 되지 않습니다.
섹션 8의 윈도우에서 도커 설치하는 부분을 보면서 따라하고 있는데 잘 되지 않습니다.이런 오류가 계속 떠서 이것저것 해보다가"Windows 기능 켜기/끄기" 검색: 검색 창에 "Windows 기능 켜기/끄기"를 입력하고 선택합니다.Hyper-V 및 Virtual Machine Platform 활성화: 아래 항목들이 체크되어 있는지 확인하고, 체크되어 있지 않다면 체크합니다.이런게 있어서 체크해보니 이젠 관리자 권한으로 실행하는 것 외에는 실행 자체가 되지 않습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
nestjs graphql Redis 최신버전 연동 방법입니다.
혹시 저처럼 초보분들을 위해서 남깁니다.저 혼자 삽질할께요 여러분들은 빠르게 세팅하고 빠르게 강의를 들어요✨혹시나 이 글을 강의 처럼 install 다해주고나서 발견하셨다면간편하게 패키지.json에서 관련된거 다 지워주고 yarn.lock를 지워주시고 yarn install 입력해주세요yarn instlal @nestjs/cache-manager cache-manager-redis-store@2.0.0 yarn install -D @types/cache-manager @types/cache-manager-redis-storecache-manager-redis-store만큼은 2.0.0으로 설치해주셔야 합니다. 그래야 redisStore에대한 타입에러가 안납니다.출처: https://4sii.tistory.com/689이 아래부터는 그냥 제 코드 복붙입니다.아래 코드는 위의 출처 사이트를 가보시면 다 적혀있으니 제 코드를 복붙하셔도되고 출처 사이트가셔서 코드 복붙하셔도됩니다.app.module.tsimport { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { CacheModule } from '@nestjs/cache-manager'; import { ConfigModule } from '@nestjs/config'; import { GraphQLModule } from '@nestjs/graphql'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AuthModule } from './apis/auth/auth.module'; import { BoardsModule } from './apis/boards/boards.module'; import { FilesModule } from './apis/files/files.module'; import { PaymentsModule } from './apis/payments/payments.module'; import { PointsTransactionsModule } from './apis/pointsTransactions/pointsTransactions.module'; import { ProductsModule } from './apis/products/products.module'; import { ProductsCategoriesModule } from './apis/productsCategories/productsCategories.module'; import { UsersModule } from './apis/users/users.module'; import { CacheConfigService } from './cacheConfig.service'; @Module({ imports: [ AuthModule, BoardsModule, // FilesModule, PaymentsModule, PointsTransactionsModule, ProductsModule, ProductsCategoriesModule, UsersModule, ConfigModule.forRoot(), // env를 사용할 수 있게 해줌 GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, autoSchemaFile: 'src/commons/graphql/schema.gql', // context 부분이있어야~ resolver나 다른데에서 // @Context() context:IContext, context.res 등등으로 사용가능함 // req는 기본적으로 들어오지만, res는 이걸 작성해야 들어옴 context: ({ req, res }) => ({ req, res }), }), // https://docs.nestjs.com/techniques/database 참고 TypeOrmModule.forRoot({ type: process.env.DATABASE_TYPE as 'mysql', host: process.env.DATABASE_HOST, port: Number(process.env.DATABASE_PORT), username: process.env.DATABASE_USERNAME, password: process.env.DATABASE_PASSWORD, database: process.env.DATABASE_DATABASE, entities: [__dirname + '/apis/**/*.entity.*'], synchronize: true, logging: true, }), CacheModule.registerAsync({ isGlobal: true, useClass: CacheConfigService }), ], }) export class AppModule {} cache-config.service.tsimport { CacheModuleOptions, CacheOptionsFactory } from '@nestjs/cache-manager'; import { Injectable } from '@nestjs/common'; import redisStore from 'cache-manager-redis-store'; @Injectable() export class CacheConfigService implements CacheOptionsFactory { createCacheOptions(): CacheModuleOptions { const config: CacheModuleOptions = { store: redisStore, host: 'localhost', port: 6379, ttl: 60, }; return config; } }
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
@Injectable 관련 질문
안녕하세요의존성 주입을 하기 위해 @Injectable 하는걸로 이해했습니다.BearerTokenGuard 을 만들때 @Injectable 을 선언 하지 않는 이유는 BearerTokenGuard은 직접 사용하지 않고 RefreshTokenGuard, AccessTokenGuard 에서 상속을 받아 상속을 받는곳에서 @Injectable 을 하고 super로 실행시키는 거여서 그런건가요??
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
섹션11 [UserModel 생성하기] postgresql Explorer 에서 UserModel 생성문제
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; import { RolesEnum } from '../const/roles.const'; @Entity() export class UserModel { @PrimaryGeneratedColumn() id: number; @Column({ length: 20, unique: true, }) nickname: string; @Column({ unique: true, }) email: string; @Column() password: string; @Column({ enum: Object.values(RolesEnum), default: RolesEnum.USER, }) role: RolesEnum; }
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
선생님 근데 docker로 mysql 돌릴때 데이터는
데이터는 어디에 저장이될까요?도커컨테이너에 저장이되는걸까요?만약에 이 강의를 완강하고 제 컴퓨터로 서버를 만들어 돌린다고했을때 보통 데이터는 어디에 저장하는걸 추천하시나요?도커컨테이너에 저장하드디스크에 저장하고 주기적으로 aws s3에 업로더해준다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
el.createReadStream is not a function이라고나옵니다
graphql-upload 버전 13.0.0으로 강의와 똑같이 맞춰줬는데도 에러가납니다 ㅠ_ㅠ혹시 해결방안이있을까요?계속 검색중인데 힘드네유..혹시나 제가 해결했다면 해결했다고 댓글달겠습니다해결했다는 댓글이 없으면 계속해서 트라이중인거니 댓글로 도와주시면 너무 감사하겠습니다
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Yarn 관련 문제
저는 이전엔 윈도우에서 yarn이 아닌 npm을 통해 패키지를 설치해왔었습니다. 최근 맥으로 OS를 바꿨고 강사님이 알려주신대로 yarn을 설치를 해서 사용을 하려고 했으나 몇몇 다른 점 및 문제점이 생겼습니다. 첫째로 yarn init시에 강사님처럼 엔터를 치는 과정이 생략되고 바로 init이 완료되는가 하면 추가로 .yarn 폴더, .editorconfig, .pnp.cjs 등 여러 다른 파일들이 생성됨과 동시에 node_modules 폴더가 생성되지 않았습니다. 또한 package.json파일은 생성되었지만 package-lock.json 파일이 생성되지 않았습니다. 또한 yarn add express를 명령어로 입력하여 package.json 파일에 dependencies에 분명이 express가 추가가 되었고 2_express_server.js 파일에서 express를 require해와서 쓸 때도 자동완성도 잘 되었습니다. 근데 node 2_express_server.js 를 통해 서버를 실행해보면 express라는 모듈을 찾을 수 없다고 계속 나옵니다. 이게 yarn의 문제인지 아니면 그냥 버전의 차이때문에 설치하는 방법이 달라진건지 궁금합니다. 일단 현재 npm install을 통해 진행을 하곤 있지만 강사님께서 계속해서 yarn을 이용해 패키지를 설치하실 예정으로 보이시길래 웬만하면 저도 yarn으로 설치하면서 강사님을 따라하는게 더 좋을 것 같아 질문드립니다. 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
노션에 있는 피그마 링크를 눌러도 들어가지지 않아요.
시작은 프리캠프의 노션에서 내리다보면 피그마 바로가기가 있는데링크를 타고 들어가면 파일을 열 수 없다고만 나옵니다. 어떻게 해야하나요?
-
미해결Kotlin으로 개발하는 Spring Boot Web MVC
[제발 부탁 드립니다.]react와 스프링 부트간 통신하는데 통신이 안되네요. 무엇이 문제일까요??
=========중용한 부분이 오타가 있어서 수정합니다================ 안녕하세요. 완강을 한후에 제가 프론트엔드와 백엔드간 통신을 확인하려합니다. 그런데 예상과 다르네요...일단 프론트 엔드 (react을 먼저 보여드릴께요) const handleSubmit = (event) => { fetch('http://localhost:8080/api/posttest', { method: 'POST', // *GET, POST, PUT, DELETE 등 body: JSON.stringify({ name: 'foo', email: 'kjy@gmail.com', message: '1', }), headers: { 'Content-type': 'application/json; charset=UTF-8', }, }) .then((response) => response.json()) .then((json) => alert(json)); alert("test") };이렇게 작성하고 ...백엔드( spring boot)는@RestController @RequestMapping("/api") class _____ApiController{ @PostMapping(path=["/posttest"]) fun postTest( @RequestBody body: BodyClass ): ResponseEntity<String> { println(body) return ResponseEntity.ok().body("test") } }data class BodyClass( var name: String = "", var email: String = "", var message: String = "" ) 이렇게 코딩 했는데 ..분명해서 테스트 해서 정상 확인했는데 ...react에서 전송하면 postTest 함수를 진입하지 않습니다. ... 백엔드쪽에 코드를 좀 바꿔서 Requestbody에서 json 파일 그대로 받자는 식으로 아래처럼 바꿨어요fun postTest( @RequestBody json: String ): ResponseEntity<String> { println(body) return ResponseEntity.ok().body("test") } react는 json 형식인지 표시하는걸 지웠는데fetch('http://localhost:8080/api/posttest', { method: 'POST', // *GET, POST, PUT, DELETE 등 body: JSON.stringify({ name: 'foo', email: 'kjy@gmail.com', message: '1', }), headers: { // 삭제 }, }) .then((response) => response.json()) .then((json) => alert(json)); alert("test" 백엔드의 postTest함수에 진입 합니다.프론트 엔드에서 전송한 json 내네요용이 전송됩니다.이게 ... 새롭게 프로젝트를 만들어도 똑같고 프론트 엔드 백엔드 모두 새롭게 프로젝트를 만들어서 테스트 해도 똑같아요...스프링 부트에서 잘못된건지... react에서 잘못된건지 잘 모르겠네요...아마도 스프링 부트에서 뭔가 잘못된거 같은게 api 서버가 있어서 그걸로 접속하니깐 되긴 하네요...그렇다면 스프링 부트에서 잘못한건지..분명 스프링 부트에도 문제가 없어 보이는데힘드네요 ... ㅠ.ㅠ 살려주세요 ㅠ.ㅠ 몇일째 못풀고 있어요...
-
해결됨차세대 Node.js 백엔드 서버 개발(Fastify & Prisma & Typescript와 함께하는)
배포-ubuntu에서 문제
수업내용대로 grep /bin/bash /etc/passwd 아래와같이 디렉터리가 없다고 나오고 이후 진행도 안되는데 어떻게 해야 할까요? 도움 부탁드립니다. 참고로 현재 제 연습 폴더는 D 드라이브 연습폴더에 있는데 어떻게 공유를 하는지요 ?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
강의 전체 소스코드 깃허브가 있을까요?
도커까지 진행했는데제 깃허브에 따로 저장하지않고 진행하다가하드가 고장나서 다 날려버렸네요 ... ㅜ없으면 어쩔수 없지만....아 그리고 가상머신에서 우분투 설치해서 해도 될까요?