묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
useAuth logout 401에러
안녕하세요 강사님!강사님께서 해당 강의에서 작성해주신대로 우선 Database와 백엔드서버를 구동시킨 채로 프론트엔드 서버를 npx react-native run-ios로 어플을 빌드하고로그아웃 버튼을 클릭했을때 위의 이미지와 같이 401에러가 발생합니다.제가 작성한 코드를 보여드리면src/hooks/queries/useAuth.ts function useLogout(mutationOptions?: UseMutationCustomOptions) { return useMutation({ mutationFn: logout, onSuccess: () => { console.log('useLogout onSuccess'); removeHeader('Authorization'); removeEncryptStorage(storageKeys.REFRESH_TOKEN); }, onSettled: () => { // auth에 해당하는 쿼리들을 캐시 무효화해서 업데이트 queryClient.invalidateQueries({queryKey: [queryKeys.AUTH]}); }, ...mutationOptions, }); } function useAuth() { const logoutMutation = useLogout(); return { logoutMutation, }; } export default useAuth; src/api/auth.tsconst logout = async () => { console.log('logout API call'); try { await axiosInstance.post('/auth/logout'); } catch (err) { console.error(`logout api err :::: ${err}`); } }; export { logout };3. src/api/axios.tsimport axios from 'axios'; const axiosInstance = axios.create({ baseURL: 'http://localhost:3030', withCredentials: true, }); export default axiosInstance;src/utils/header.tsimport axiosInstance from '../api/axios'; function setHeader(key: string, value: string) { axiosInstance.defaults.headers.common[key] = value; } function removeHeader(key: string) { if (!axiosInstance.defaults.headers.common[key]) { return; } delete axiosInstance.defaults.headers.common[key]; } export {setHeader, removeHeader}; src/screens/map/MapHomeScreen.tsximport React from 'react'; import {Button, StyleSheet, Text, View} from 'react-native'; import useAuth from '../../hooks/queries/useAuth'; const MapHomeScreen = () => { const {logoutMutation} = useAuth(); return ( <View> <Text>맵 스크린</Text> <Button title="로그아웃" onPress={() => logoutMutation.mutate(null)} /> </View> ); }; const styles = StyleSheet.create({}); export default MapHomeScreen;
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
모듈이 더 이상 지원하지 않는답니다
@types/bcrypt는 다운 가능 합니다
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
useAuth
22:41 타임을 보시면src/hooks/queries/useAuth.ts파일에서 리액트 쿼리를 이용하여 선언한 것을 useAuth라는 함수로 만들어서 반환해주고 있는데요function useAuth() { const signupMutation = useSignup(); const refreshTokenQuery = useGetRefreshToken(); const getProfileQuery = useGetProfile({ enabled: refreshTokenQuery.isSuccess, // true일떄 쿼리가 실행 }); const isLogin = refreshTokenQuery.isSuccess; const loginMutation = useLogin(); return { signupMutation, refreshTokenQuery, getProfileQuery, isLogin, loginMutation, }; } src/navigations/root/RootNavigator.tsx 파일에서 위의 함수를 호출할때 const isLogin = useAuth();로 반환받고있습니다. 구조분해할당이 아니라 객체 그 자체로 받는 이유가 있을까요?
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
[!] Error installing boost
❗질문 작성시 꼭 참고해주세요현재 문제(또는 에러)와 코드(또는 github)를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. (일부만 자르거나 복사하지말아주세요.) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다.다시 따라해보는중인데npx react-native@0.72.6 init ykservice --version 0.72.6로 할경우 cocoapods 설치시 boost 설치 실패에러가 발생합니다. 0.72.6 으로 진행하려면 아래 링크 참조하여 수정하면 가능합니다. https://github.com/boostorg/boost/issues/843#issuecomment-1872943124 근데 인퍼런은 수업별로 질문게시판이 있으면 좋겠네요.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
오류가 있습니다
이 코드를 실행하면이렇게 data가 undefind가 나오는데 이유가 뭔가요(data:body하면 정상적인 결과가 도출됩니다)
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
import 에서 오류가 납니다
깃허브에서 배꼇는데 오류가 발생합니다
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
이런 오류가 나옵니다
이런 오류가 나옵니다
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
에러가 발생합니다
이것 외에는 단서가 없습니다
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
1-5는 Mac 기준으로 설명이 되는 것 같은데 Windows 에서도 진행해야하는건가요?
윈도우 환경의 수강생입니다. 1-5를 진행하려 하는데 npm 이 실행이 안되어서 진행을 못하고 있습니다.윈도우 환경에서도 1-5는 수행을 해야하는건가요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
timezone 관련
안녕하세요 선생님.질문이 있습니다! @CreateDateColumn({ name: 'mb_regs_tm', type: 'timestamp', comment: '등록일시', }) regs_tm: Date; @UpdateDateColumn({ name: 'mb_mod_tm', type: 'timestamp', nullable: true, comment: '수정일시', }) mod_tm: Date;위 데코레이션으로 만든 컬럼은 따로 시간을 지정해주지 않다보니 자동으로 UTC로 값이 설정되는데요.문제는 @Column({ name: 'mb_exp_tm', type: 'timestamp', nullable: true, comment: '만료일시', }) exp_tm: Date;이 컬럼의 경우 export function getExpirationDate(days: number): Date { const now = new Date(); return new Date(now.setDate(now.getDate() + days)); }위의 함수를 사용하여 데이터가 생성된 날로부터 90일을 더한 값으로 만료일을 설정하거든요.근데 mb_exp_tm 컬럼만 KST로 설정되고 나머지 mb_regs_tm, mb_mod_tm는 UTC로 데이터가 저장됩니다. https://github.com/typeorm/typeorm/issues/5841위 이슈에서도 제가 현재 고민하고 있는 부분에 대해 얘기하고 있지만 명확한 답은 아직 찾질 못해서요.혹시 위 문제에 대한 해결책을 들을 수 있을까요?
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
배포 질문인데요
오류에 관련된 질문은 아니고 일반적인 질문 입니다 .개발을 완료후 안드로이드에 배포를 하려고 하는데 테스트를 꼭 거쳐야 배포가 가능 한가요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
특정 post의 특정 코맨트 조회 API 관련 질문
@Get(':commentId') getComment(@Param('commentId', ParseIntPipe) commentId: number) { return this.commentsService.getCommentById(commentId); }안녕하세요 코드팩토리님해당 강의 듣는중 CommentController의 getComment 메서드에서 분명 특정 post의 특정 comment를 가져와야할거같은데 보면 commentId로만 조회하는걸로 보여집니다.제가 이해하지 못하고 의도를 파악하지 못한건지 반대인지 확인이 필요해보입니다. 상기는 해당 문제되어 보여지는 코드입니다. 강의에서는 postman을 사용해 해당 엔드포인트로 요청하는 장면이있는데 postId에 152? 게시글ID 값을 넣어서 조회하는데 코드대로면 의미가 없어보입니다.감사합니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
[세션 10] FindOne 함수 이용해서 하나의 데이터만 찾기에서
http://localhost:3000/posts/:id 를 send하게되면NotFoundException()이 실행이 되야하는데 이런 에러가 나옵니다async getPostById(id: number) { const post = await this.postsRepository.findOne({ where: { id, }, }); if (!post) { throw new NotFoundException(); } return post; }잘 입력한 것 같은데 . 왜그런가요?
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
css에서 <View>가 없다면 왜 두 버튼 크기가 달라지는 지 궁금합니다.
<Pressable disabled={inValid} style={({pressed}) => [ styles.container, styles[size], pressed ? styles[`${variant}Pressed`] : styles[variant], inValid && styles.inValid, ]} {...props}> {/* <View style={styles[size]}> */} <Text style={[styles[`${variant}Text`], styles.text]}>{label}</Text> {/* </View> */} </Pressable> 강의 내용대로 수정을 진행하면 만들어주신대로 코드가 정상작동합니다. 그런데, 저는 강의 3:49초에서 <View/>를 넣기 전에도 동일한 width여야 된다 생각하는데, 왜 여기서 두 버튼의 크기가 다르고 view를 넣으면 어째서 고쳐지는 지를 잘 모르겠습니다.( text 크기 따라서 달라지는 거 같은데, pressable이 100%이니 view가 없어도 같은 크기여야하는 거 같은데 이해를 잘 못하겠습니다.)
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
카카오 어드민 세팅 이슈
카카오에 로그인하면 이런 오류가 뜨는데 어떡하죠?
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
안드로이드용으로 npm start 했을 때 빌드에 실패함.
최대한 강의에서 나온대로 했지만, 계속 npm start에서 문제가 일어납니다. 환경변수랑, npm start 당시에 Pixel 5 API 33을 켜둔 상태였습니다... 계속 안되니깐 화가 나네요로그는 다음과 같습니다.C:\Users\sc003\Desktop\Visual Stdio code\Matzip>npm start> Matzip@0.0.1 start> react-native start(node:9660) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.(Use node --trace-deprecation ... to show where the warning was created) Welcome to Metro v0.76.8 Fast - Scalable - Integratedr - reload the appd - open developer menui - run on iOSa - run on Androidinfo Opening the app on Android...info JS server already running.info Launching emulator...info Installing the app...> Task :gradle-plugin:compileKotlin UP-TO-DATE> Task :gradle-plugin:compileJava NO-SOURCE> Task :gradle-plugin:pluginDescriptors UP-TO-DATE> Task :gradle-plugin:processResources UP-TO-DATE> Task :gradle-plugin:classes UP-TO-DATE> Task :gradle-plugin:jar UP-TO-DATE> Task :gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE> Task :app:buildCodegenCLI SKIPPED> Task :app:generateCodegenSchemaFromJavaScript SKIPPED> Task :app:generateCodegenArtifactsFromSchema SKIPPED> Task :app:generatePackageList> Task :app:preBuild> Task :app:preDebugBuild> Task :app:compileDebugAidl NO-SOURCE> Task :app:compileDebugRenderscript NO-SOURCE> Task :app:generateDebugBuildConfig UP-TO-DATE> Task :app:javaPreCompileDebug UP-TO-DATE> Task :app:checkDebugAarMetadata UP-TO-DATE> Task :app:generateDebugResValues UP-TO-DATE> Task :app:mapDebugSourceSetPaths UP-TO-DATE> Task :app:generateDebugResources UP-TO-DATE> Task :app:mergeDebugResources UP-TO-DATE> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE> Task :app:extractDeepLinksDebug UP-TO-DATE> Task :app:processDebugMainManifest UP-TO-DATE> Task :app:processDebugManifest UP-TO-DATE> Task :app:processDebugManifestForPackage UP-TO-DATE> Task :app:processDebugResources UP-TO-DATE> Task :app:compileDebugJavaWithJavac UP-TO-DATE> Task :app:mergeDebugShaders UP-TO-DATE> Task :app:compileDebugShaders NO-SOURCE> Task :app:generateDebugAssets UP-TO-DATE> Task :app:mergeDebugAssets UP-TO-DATE> Task :app:compressDebugAssets UP-TO-DATE> Task :app:processDebugJavaRes NO-SOURCE> Task :app:mergeDebugJavaResource UP-TO-DATE> Task :app:checkDebugDuplicateClasses UP-TO-DATE> Task :app:desugarDebugFileDependencies UP-TO-DATE> Task :app:mergeLibDexDebug UP-TO-DATE> Task :app:dexBuilderDebug UP-TO-DATE> Task :app:mergeProjectDexDebug UP-TO-DATE> Task :app:mergeDebugJniLibFolders UP-TO-DATE> Task :app:mergeDebugNativeLibs UP-TO-DATE> Task :app:stripDebugDebugSymbols UP-TO-DATE> Task :app:validateSigningDebug UP-TO-DATE> Task :app:writeDebugAppMetadata UP-TO-DATE> Task :app:writeDebugSigningConfigVersions UP-TO-DATE> Task :app:mergeExtDexDebug UP-TO-DATE> Task :app:packageDebug UP-TO-DATE> Task :app:createDebugApkListingFileRedirect UP-TO-DATE> Task :app:installDebugInstalling APK 'app-debug.apk' on 'Pixel_5_API_33(AVD) - 13' for :app:debugInstalled on 1 device.BUILD SUCCESSFUL in 8s38 actionable tasks: 2 executed, 36 up-to-dateinfo Connecting to the development server...info Starting the app...Error: Command failed with exit code 1: adb shell am start -n com.matzip/com.matzip.MainActivity -a android.intent.action.MAIN -c android.intent.category.LAUNCHER at makeError (C:\Users\sc003\Desktop\Visual Stdio code\Matzip\node_modules\execa\lib\error.js:60:11) at module.exports.sync (C:\Users\sc003\Desktop\Visual Stdio code\Matzip\node_modules\execa\index.js:194:17) at tryLaunchAppOnDevice (C:\Users\sc003\Desktop\Visual Stdio code\Matzip\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\tryLaunchAppOnDevice.js:47:22) at C:\Users\sc003\Desktop\Visual Stdio code\Matzip\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:96:39 at Array.forEach (<anonymous>) at runOnAllDevices (C:\Users\sc003\Desktop\Visual Stdio code\Matzip\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:91:48) at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async Command.handleAction (C:\Users\sc003\Desktop\Visual Stdio code\Matzip\node_modules\@react-native-community\cli\build\index.js:111:9)info Run CLI with --verbose flag for more details.Matzip 폴더에 android > app > src > AndroidMainfest.xml 에<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.matzip">이런식으로 넣어두었는데도 안됩니다..
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
프론트 에러 뜨는데 수정 안해주시나요
수강생분들의 질문을 기다립니다! - 에러에 해당하는 질문은 "에러가 발생한 상황에 대한 충분한 설명", "에러 메세지", "에러가 난 코드 스크린샷"을 함께 첨부해주세요. - 언어에 해당하는 질문은 구글링 및 서치 후에 구체적으로 질문해주시면 좋습니다. - 간단한 진로 및 방향성에 대한 질문은 메일로 보내주세요.- 패키지 버전 관리은 실무 환경과 트랜드에 맞추어 강의를 업데이트 하고 있습니다. 강의를 그대로 따라갔는데 에러가 발생한다면 패키지 버전을 강의에서 사용하는 버전과 동일하게 맞춰주세요!- 강의 노트, QA 목록, 공지 사항을 먼저 확인해주세요.- 논리적이고 구체적인 질문은 학습 효과를 올립니다 :)
-
미해결따라하며 배우는 NestJS
typeorm ^10.0.2 버전 사용시 No metadata for "BoardRepository" was found. 오류 발생 해결방법.
@nestjs/typeorm: ^10.0.2 버전에서도 정상 동작합니다.아래 코드 참고하셔서 수정해 보세요. boards.module.ts 파일에서 providers 부분 수정.... @Module({ imports: [TypeOrmModule.forFeature([Board])], controllers: [BoardsController], providers: [BoardsService, BoardRepository], // BoardRepository 추가 }) export class BoardsModule {}board.repository.ts 파일에서 수정import { Injectable } from '@nestjs/common'; import { DataSource, Repository } from 'typeorm'; import { Board } from './board.entity'; import { CreateBoardDto } from './dto/create-board.dto'; import { BoardStatus } from './board-status.enum'; @Injectable() // 변경 export class BoardRepository extends Repository<Board> { // constructor 추가 constructor(dataSource: DataSource) { super(Board, dataSource.createEntityManager()); } }
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
OneToOne Option OnDelete 작동
안녕하세요 코드팩토리님 NestJS에 관심이 생겨 최근 강의를 듣고 있습니다.OneToOne 에서 onDelete 설정을 했을 때 계속 profile이 null 값으로만 변경되는데 제 코드에 문제가 있는지 궁금합니다. 검토 한 번 부탁드려요. 감사합니다!!// user.entity.ts export class UserModel { // 자동으로 ID 생성 @PrimaryGeneratedColumn() id: number; @Column() email: string; @Column({ type: 'enum', enum: Role, default: Role.USER, }) role: Role; // 데이터가 생성되는 날짜와 시간이 자동으로 찍힌다. @CreateDateColumn() createdAt: Date; // 데이터가 업데이트되는 날짜와 시간이 자동으로 찍힌다. @UpdateDateColumn() updatedAt: Date; // 데이터가 업데이트 될 때마다 1씩 올라간다. // 처음 생성되면 값은 1이다. // save() 함수가 몇번 불렸는지 기억한다. @VersionColumn() version: number; @Column() @Generated('uuid') additionalId: string; ////////////// 이 부분 ///////////// @OneToOne(() => ProfileModel, (profile) => profile.user, { // find() 실행 할 때마다 항상 같이 가져올 relation을 정할 수 있다. eager: true, // 저장할 때 relation을 한번에 같이 저장 가능하게 한다. cascade: true, // null 값이 가능하게 한다. nullable: true, // on: ~했을 때 // 관계가 삭제 됐을 때 // no action => 아무것도 안함 // cascade => 참조하는 Row도 같이 삭제 // set null => 참조하는 Row에서 참조 id를 null로 변경 // set default => 기본 세팅으로 설정 (테이블의 기본 세팅) // restrict => 참조하고 있는 Row가 있는 경우 참조 당하는 Row 삭제 불가 onDelete: 'RESTRICT', }) profile: ProfileModel; ////////////// 이 부분 ///////////// @OneToMany(() => PostModel, (post) => post.author) posts: PostModel[]; } // app.controller.ts import { Controller, Delete, Get, Param, Patch, Post } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Role, UserModel } from './entity/user.entity'; import { Repository } from 'typeorm'; import { ProfileModel } from './entity/profile.entity'; import { PostModel } from './entity/post.entity'; import { TagModel } from './entity/tag.entity'; @Controller() export class AppController { constructor( @InjectRepository(UserModel) private readonly userRepository: Repository<UserModel>, @InjectRepository(ProfileModel) private readonly ProfileRepository: Repository<ProfileModel>, @InjectRepository(PostModel) private readonly PostRepository: Repository<PostModel>, @InjectRepository(TagModel) private readonly TagRepository: Repository<TagModel>, ) {} @Get('users') getUsers() { // OntToOne에 eager: true 설정을 하면 relations 옵션을 여기에서 넣어주지 않아도 된다. return this.userRepository.find({}); } @Delete('user/profile/:id') async deleteProfile(@Param('id') id: string) { await this.ProfileRepository.delete(+id); } @Post('user/profile') async createUserAndProfile() { const user = await this.userRepository.save({ email: 'asdf@naver.com', profile: { profileImg: 'asdf.jpg', }, }); // cascade: true 설정을 하면 relation을 한번에 같이 저장하게 되서 더 이상 두번 save 할 필요가 없음 // const profile = await this.ProfileRepository.save({ // profileImg: 'asdf.jpg', // user, // }); return user; } }
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
타입스트립트 interface와 type 쓰기
선생님 타입스트립트에서 interface와 type 을 구현이 진행되는데 저의 기준으로는type은 복잡한 타입정의시 사용interface 상속이 필요한경우 사용으로 보고있는데 선생님은 어떤 기준으로 두개를 사용하는지 알고 싶습니다. interface로도 다 구현이 가능할것 같아서 질문 드립니다. ❗질문 작성시 꼭 참고해주세요현재 문제(또는 에러)와 코드(또는 github)를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. (일부만 자르거나 복사하지말아주세요.) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다.
주간 인기글
순위 정보를
불러오고 있어요