묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
material 붉은 밑줄
이런식으로 저도 그렇고, 로펀님도 그렇고 material 가져올때 붉은 밑줄이 나오는데, 이거 안 나오게 하는 방법이 있나요?
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
파일 이름이 한글일 때 에러 발생
안녕하세요, 강의 내용대로 했는데 500 에러가 나서 확인해보니 한글로 된 파일일 경우 에러를 내는 상황입니다 ㅜ supabase 스토리지에서는 한글로된 이름을 허용하지 않는것 같은데, 따로 해결방법이 있을까요?
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
recoil 타입 에러
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다.💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. recoil 이게 next에서 쓸 때에 따로 타입 에러 등 next가 recoil을 못 찾아내는 거 같은데, 강의 진행할때에는 recoil을 쓸거잖아요?이럴때에는 어떻게 해야 하나요? 버전을 낮추어야 하나요? 낮춘다면 어디 버전까지 낮춰야 할까요?
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
안드로이드 기준으로 원래 키보드가 터치로 안뜨나요??
인풋 컴포넌트를 누르면 email 까진 그래도 키보드 띄울수있게 바가 떠서 show on screen keyboard 누르면 키보드가 뜨는데비밀번호는 왼쪽 바도 안떠서요
-
미해결Next + React Query로 SNS 서비스 만들기
프레임워크 여론 파악법
next 15, app router를 알아갈수록 어째.. 제 취향에 안맞거나 제 서비스에 적용하기에 불리한 점들이 많은데요 저만 그런건지 궁금하기도 해서, 특정 프레임워크에 대한 평가나 여론을 알아보는 팁 같은게 있으신지 궁금합니다. 지금은 유튜브 검색해서 상위노출 영상 몇개에 의존하는데 모수가 부족한 느낌입니다 정석적으론 각 프레임워크 공식문서를 보고 그 특성들을 이해해 자기 서비스에 맞는걸 스스로 판단하는 것이겠지만, 그래도 집단지성에 기대고 싶네요ㅎ
-
미해결Next + React Query로 SNS 서비스 만들기
필터옵션이 많은 페이지에서 서버 fetch를 하는게 맞는걸까요??
next 공식문서에서 서버 fetch를 권장하고 있지만필터옵션이 다수 포진된 페이지에서도 서버 fetch를 해야할까 의문점이 듭니다.필터 버튼 하나 누를때마다 다시 fetch 해야하니까 route.push나 replace 할 수 밖에 없는데 이게 과연 좋은 방법인가 의구심이 듭니다.리액트 쿼리를 사용하는게 더 나을지, 서버 fetch를 사용하는게 나은지 선생님의 의견이 궁금합니다. 추가로 window.history.replaceState webAPI를 사용하면 단순 url만 변경하고 페이지 로드나 컴포넌트 리렌더링은 일어나지 않는걸로 알고 있는데요. 근데 리액트 쿼리로 클라이언트 fetch 할 땐 window.history.replaceState 로 url만 변경해도 다시 fetch가 되더라구요?? 어떤 원리로 동작하게 되는지 궁금합니다!
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
강의 code 올려논 github 있나요 ?
있으면 url 좀 알려주세요.
-
미해결Next + React Query로 SNS 서비스 만들기
서버 fetch suspense 로 감싸고 새로고침 시 잠시 빈 화면이 노출된 후 fallback ui가 노출됩니다.
autoexport default function Weekday() { return ( <Suspense fallback={<WeekdayBannerLoading />}> <WeekdayMiniBanner /> </Suspense> ); }export default function WeekdayMiniBanner() { const { banners } = use(getBanners( params )); if (banners.length === 0) return null; return ( <div className={cn('wrapper')}> <WeekdaySwiper data={banners} /> </div> ); }이런 식으로 코드를 짰는데요. 해당 페이지를 새로고침하면 초기엔 컨텐츠영역 아무것도 노출되지않다가 잠깐 fallback ui가 노출되고 fetch가 완료되면 컨텐츠를 노출시킵니다. suspense는 promise가 pending 중일 때 promise를 catch해서 fallback ui 를 노출시키는걸로 알고 있는데 왜 새로고침 시 페이지 초기로드단계에선 빈화면이 노출되는지 궁금합니다... 아님 제가 잘못 설계한 걸까요..?? 리액트 공식문서 suspense 예시 코드에선 버튼 누르자마자 바로 fallback ui를 노출시키는데 말이죠... 참고로 WeekdaySwiper 내부는 react swiper로 구성되어있습니다! (클라이언트 컴포넌트)
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
ios simulator 환경설정
brew install watchman 설치 후 가이드가 변경이 되었는지 Create a development build부분이 생겼는데 이부분도 미리 설치하면 되는걸까요?
-
미해결Next + React Query로 SNS 서비스 만들기
template.tsx 내 서버fetch 응답값과 클라이언트 컴포넌트 상태값 싱크가 맞지 않는 이슈
아래 코드와 같이 template.tsx에서 서버fetch 후 사용처인 클라이언트 컴포넌트로 props 넘겨주도록 세팅해놓았습니다. //template.tsx 자식 컴포넌트 export default async function Sidebar() { const { isSucceed, body } = await getUserGetInfo(params); return ( <SidebarLayout> <GiftIcon isNewGift={!!body?.info.new_gift} /> 'use client' export default function GiftIcon({ isNewGift }: { isNewGift: boolean }) { const { onClose } = useModal('SIDEBAR'); return ( <Link className={isNewGift ? cn(st['active']) : ''} /// <Icon type="Present" title="선물함" w={25} h={25} /> 이 상태에서 next 페이지 이동 시 서버fetch는 리렌더링 되는것을 확인했는데이상하게 클라이언트는 리렌더링이 되지 않습니다. 즉 서버 응답값은 상태가 바뀌어도 클라이언트 상태값은 바뀌지 않더라구요... 왜 이런걸까요ㅠㅠㅠ
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
TotalCounter을 작성할때
저는 처음에 과제를 할때 setTotal을 직접 prop으로 내렸는데 handleTotal 을 만들어서 함수로 내려준 이유가 있을까요??차이점과 장단점에 대해서가 궁금합니다. import Counter from "./Counter"; import React, { useState } from "react"; function Main() { const [Total, setTotal] = useState(0); return ( <main> <h2>Main Component</h2> <h1>{Total}</h1> <br /> <br /> <Counter Total={Total} setTotal={setTotal} /> <br /> <br /> <Counter Total={Total} setTotal={setTotal} /> </main> ); } export default Main;
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
33. 강의 로그인 연동 중 에러
안녕하세요, 33. 강의 로그인 연동 중 에러가 발생하여 질문드립니다..! 코드 작성 이후 회원가입 시연을 시도하였는데, pgAdmin4에 데이터가 쌓이지 않고 터미널에 다음과 같은 에러가 발생하였습니다. iOS Bundled 788ms node_modules/expo-router/entry.js (1383 modules)λ Bundled 449ms node_modules/expo-router/node/render.js (1084 modules)Web node_modules/expo-router/entry.js ▓▓▓▓▓▓▓▓▓▓▓░░░░░ 69.8% (666/797)λ node_modules/expo-router/node/render.js ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░ 98.7% (1077/1084)Web Bundled 1009ms node_modules/expo-router/entry.js (797 modules)Web node_modules/expo-router/entry.js ░░░░░░░░░░░░░░░░ 0.0% (0/1)λ WARN "shadow*" style props are deprecated. Use "boxShadow". λ Bundled 24ms node_modules/expo-router/node/render.js (1 module)Web Bundled 191ms node_modules/expo-router/entry.js (1 module) 해당 문제 해결 방법을 알려주시면 정말 감사하겠습니다!
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
KeyboardAwareScrollView가 android emulator에서 잘 동작하지 않습니다.
https://github.com/znehraks/react-native-basic/blob/main/app/post/%5Bid%5D.tsx이 코드인데, Android Emulator에서 KeyboardAwareScrollView가 정상동작하지 않습니다.import AuthRoute from '@/components/AuthRoute'; import FeedItem from '@/components/FeedItem'; import InputField from '@/components/InputField'; import { colors } from '@/constants'; import useGetPost from '@/hooks/queries/useGetPost'; import { useLocalSearchParams } from 'expo-router'; import { Pressable, SafeAreaView, ScrollView, StyleSheet, Text, View } from 'react-native'; import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; export default function PostDetailScreen() { const { id } = useLocalSearchParams(); const { data: post, isPending, isError } = useGetPost(Number(id)); if (isPending || isError) { return <></>; } return ( <AuthRoute> <SafeAreaView style={styles.container}> <KeyboardAwareScrollView contentContainerStyle={styles.awareScrollViewContainer}> <ScrollView contentContainerStyle={styles.scrollViewContainer}> <View style={{ marginTop: 12 }}> <FeedItem post={post} isDetail /> <Text style={styles.commentCount}>댓글 {post.commentCount}개</Text> </View> </ScrollView> <View style={styles.commentInputContainer}> <InputField rightChild={ <Pressable style={styles.inputButtonContainer}> <Text style={styles.inputButtonText}>등록</Text> </Pressable> } /> </View> </KeyboardAwareScrollView> </SafeAreaView> </AuthRoute> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: colors.WHITE, }, awareScrollViewContainer: { flex: 1, backgroundColor: colors.GRAY_200, }, scrollViewContainer: { backgroundColor: colors.GRAY_200, }, commentCount: { marginTop: 12, backgroundColor: colors.WHITE, paddingVertical: 12, paddingHorizontal: 16, fontSize: 16, fontWeight: 'bold', }, commentInputContainer: { width: '100%', borderTopColor: colors.GRAY_200, borderTopWidth: StyleSheet.hairlineWidth, backgroundColor: colors.WHITE, padding: 16, bottom: 0, position: 'absolute', }, inputButtonContainer: { backgroundColor: colors.ORANGE_600, padding: 8, borderRadius: 5, }, inputButtonText: { color: colors.WHITE, fontWeight: 'bold', }, });
-
해결됨Next + React Query로 SNS 서비스 만들기
Auth.js 사용 시 authorize 함수가 호출되지 않습니다
안녕하세요. 먼저, Next.js 를 입문한지 얼마 되지 않아 질문이 서툴 수 있는 점 양해 부탁드립니다..!현재 msw 세팅을 완료 했고, Auth.js는 공식문서를 참고하여 5버전과 동일하게 auth.ts 파일을 아래와 같이 작성하였습니다.// auth.ts import NextAuth from "next-auth"; import Credentials from "next-auth/providers/credentials"; export const { handlers, signIn, signOut, auth } = NextAuth({ pages: { signIn: "/i/flow/login", newUser: "/i/flow/signup", }, providers: [ Credentials({ authorize: async (credentials) => { const response = await fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/login`, { method: "POST", body: JSON.stringify({ username: credentials.username, password: credentials.password, }), headers: { "Content-Type": "application/json" }, }, ); if (!response.ok) { return null; } const user = await response.json(); console.log("로그인 정보", user); return { id: user.id, name: user.nickname, image: user.image, ...user, }; }, }), ], });// @modal/(.)/i/flow/login/page.tsx const onLogin = async () => { try { await signIn("credentials", { username: id, password, redirect: false, }); router.replace("/home"); } catch (err) { console.error(err); setMessage("아이디와 비밀번호가 일치하지 않습니다."); } };문제는 authorize 함수 내 콘솔이 찍히지 않는 것으로 보아, 해당 함수가 아예 실행되지 않는 것 같습니다.회원가입하지 않은 아이디와 비밀번호를 입력해도 로그인이 되고 /home 으로 이동합니다. home으로 이동 후 session 응답 값은 null이고 쿠키에도 auth 토큰이 저장되지 않습니다.그리고 터미널에는 첫번째 이미지 처럼 에러 메세지가 뜨고, 브라우저 콘솔에는 두번째 이미지와 같은 메세지가 뜹니다. // handlers.ts http.post(`${baseUrl}/api/login`, () => { console.log("로그인"); return HttpResponse.json(User[1], { headers: { "Set-Cookie": "connect.sid=msw-cookie; HttpOnly; Path=/", }, }); }),현재는 MSW가 요청을 제대로 가로채지 못하고 있는 것 같다는 의심이 드는데, 어디를 우선적으로 점검해야 할지 잘 모르겠습니다..초보라 부족한 점이 많지만, 방향을 잡을 수 있도록 힌트나 조언 주시면 정말 감사하겠습니다 ㅠㅠ
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
29. 백엔드 수업 자료를 어디서 다운 받는 지 궁금합니다!
수업 시작과 동시에 수업 자료를 다운 받으라고 하는데, 해당 회차 강의에 수업 자료 링크가 없어서 여쭤봅니다 ㅠ
-
해결됨[풀스택 완성] Supabase로 웹사이트 3개 클론하기 (Next.js 14)
아니... 강의 자료가 없나요?
강의에 쓰신 노션 자료는 따로 안주시나요?? 강의 자료에 todo list 만 있네요? 이게 다인가요?
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
시뮬레이터 관련 질문
강의 [1-5] VScode에서 시뮬레이터를 활성화 하는 부분이 있던데 이때 원도우에서 개발 하면 Xcod가 실행이 되지 않아 ios 시뮬레이터를 활성화하지 못하던데 이러면 ios 환경 개발을 못하는건가요 아직 제가 초반 부분만 봐서 그런지 이해를 못 하겠습니다. 혹시나 해서 여줘봅니다.(info Opening the app on iOS...Error: Error: Command failed with exit code 1: xcodebuild -list -json'xcodebuild'��(��) ���� �Ǵ� �ܺ� ����, ������ �� �ִ� ���α�, �Ǵ���ġ ������ �ƴմϴ�. at getProjectInfo (C:\Users\사용자\NTMap\node_modules\@react-native-community\cli-platform-ios\build\tools\getProjectInfo.js:29:11) at Object.runIOS [as func] (C:\Users\사용자\NTMap\node_modules\@react-native-community\cli-platform-ios\build\commands\runIOS\index.js:88:58) at Command.handleAction (C:\Userㄴ\사용자\NTMap\node_modules\@react-native-community\cli\build\index.js:111:23) at Command.listener [as actionHandler] (C:\Users\사용자\NTMap\nodemodules\commander\lib\command.js:482:17) at C:\Users\사용자\NTMap\node_modules\commander\lib\command.js:1283:65 at Command._chainOrCall (C:\Users\사용자\NTMap\node_modules\commander\lib\command.js:1177:12) at Command._parseCommand (C:\Users\사용자\NTMap\node_modules\commander\lib\command.js:1283:27) at C:\Users\사용자\NTMap\node_modules\commander\lib\command.js:1081:27 at Command._chainOrCall (C:\Users\사용자\NTMap\node_modules\commander\lib\command.js:1177:12) at Command._dispatchSubcommand (C:\Users\사용자\NTMap\node_modules\commander\lib\command.js:1077:23))
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
윈도우에서 안드로이드 열었는데 '텍스트' 문구가 안보여요
https://github.com/minpppal/react-native-avartar에러는 안뜹니다.윈도우 환경입니다."react-native": "0.79.4",node : v22.16.0 화면에 아무것도 안떠요.웹으로 열면 잘뜹니다. (아래 사진은 웹)
-
미해결Next + React Query로 SNS 서비스 만들기
next.js 에서 로그인에 관하여
안녕하세요 제로초님, 로그인 관련해서 어려움이 있어서 질문드립니다. 현재 사용하고 있는 기술 스택은 다음과 같습니다.프론트 : next.js/백엔드 : express 로그인을 구현했고 백엔드에서 토큰을 만들어서 refreshToken 은 httpOnly cookie 에,accessToken 은 응답 바디에 넣어서 보내주도록 만들었습니다. 라이브러리 사용하지 않고, next.js 에서 로그인 api 호출하고 token 은 전역으로 관리하고, 토큰 만료시 토큰 재발급하고, 새로고침 시에도 로그인이 유지되도록(httponly 쿠키로) fetchWrapper 을 따로 만들었습니다. -> fetch 은 axios 와 달리 interceptor 같은거 못사용하니까요 하지만 이는 클라이언트 컴포넌트에서만 가능하고, 서버에서는 토큰 만료시 재시도 로직이 불가능하다는 것을 알게되었습니다. 코드도 지저분해지는 것같고.. 그래서 다른 해결책이 있나해서 이 강의의 로그인 부분을 보고있습니다. 근데 auth,js 는 env 에 jwt secret 키를 넣어야하는걸 보니 클라이언트에서 토큰을 관리하는 것 같더라구요 제 생각은 auth.js 는 백엔드 서버에서 쿠키를 관리하는 방식과 함께 사용하기에는 맞지 않다는 느낌을 들었습니다. 그래서 next.js 에서 로그인 및 권한 관리를 쉽게 사용하려면 결국 auth.js 를 사용해야만 하는 것인지.... 궁금합니다. 그렇게된다면 백엔드에서 토큰 만드는 로직을 없애는 것이 맞는지 궁금합니다. 감사합니다.
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
gitHub 레파지토리 보면
왜 39강까지지만 push하구 그 이후 회차들은 push안했나요? 강의 수강회차별로 소스 싱크맞추어서 학습하면 도움이 많이 될텐데 강의별로 확인해셔서 소스 동기화 요청드립니다. 80강이면 80강 까자끝난 소스가 올라오면 되겠죠 ? 79강에서 80강 갔는데 ui가 바뀌어서 어떻게 환경을 잡아야할지 당황스럽습니다.