묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
/boards/224/ 403 이 뜨네요.
next.config.mjs/** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, trailingSlash: true, generateBuildId: () => "tranme24", // 아래 주소들만 out 폴더에 만들기 exportPathMap: () => ({ "/": {page: "/"}, "/boards": {page: "/boards"}, "/404": {page: "/404"}, }) }; export default nextConfig; 위와같이 설정 경로에서 아래의 이미지와 같이 파일들이 동일한걸 확인했습니다.왜 안되는걸까요.
-
미해결Next + React Query로 SNS 서비스 만들기
안녕하세요! next-auth 로그인하기 부분 질문입니다.
지금 강의에서 보여주신게 아직 업데이트가 안 된 것인지 궁금합니다!Auth.js 홈페이지에 있는 문서와 코드가 조금 다른 것 같아서요. next.js 15 버전으로 강의 따라가고 있고 auth.js 설치할 때 auth@5 하니까 설치가 안 돼서 auth@beta 이렇게 설치하고 진행 중 입니다! 제가 본 페이지는 다음과 같습니다.https://authjs.dev/getting-started/authentication/credentials 추가일단 제로초님이 하신 방법으로 CredentialsProvider 직접 import 하니까 되는 것 같습니다!
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
사용중인 Theme 문의
안녕하세요, 강사님. 강의 너무 잘 듣고 있습니다. 혹시 사용중이신 Theme과 어떻게 설정하고 있는지 공유 부탁드려도 될까요? 가독성이 좋아서 저도 동일하게 적용하고 싶습니다. 감사합니다.
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
useEffect로 사용을 해도 되나요?
useEffect(() => { localStorage.setItem('todoData', JSON.stringify(todoData)); }, [todoData]); 이렇게 작성을 하고, 나머지는 다 주석을 처리했는데도 정상 작동하는 것 같더라구요. 하지만 의문인게 setTodoData((prev) => [...prev, newTodo]); localStorage.setItem('todoData', JSON.stringify([...todoData, newTodo]));여기도 주석처리를 했는데, 여기는 조금 작성하는 게 다르지 않나요? handleRemoveClick = () => { setTodoData([]) }여기도 그렇구요. 그런데 그냥 다 정상 작동 하네요?
-
미해결Next + React Query로 SNS 서비스 만들기
로그인 방식 관련해서 질문드립니다!!
로그인 방식을 구현하면서, 쿠키로만 개발할 경우 완전히 백엔드에 의존하게 되어 로컬로, 동시에 키고 개발을 하지 않는이상, 도메인간 불일치를 해결 할 방법이 없어, msw를 사용해야 한다고, 이전에 말씀해주셨습니다!!보통, 회사나, 개인 소프트웨어를 만들 때 어떤 방식으로 로그인을 주로 만드시는지 조금 알고 싶어 궁금하여 질문을 남깁니다!!로그인 방식 고찰로그인 성공시, accessToken을 body로 받고, refreshToken은, httpOnly 쿠키로 받는 경우 (서버에서, DB or Redis를 통해 refreshToken 관리) → 인증 필요 요청 (Bearer accessToken), 리프레시 필요 요청 (refreshToken 심긴 쿠키를 바탕으로 요청)- DB에서 관리하는 것 보다, redis를 통해 관리했을 떄 읽기 속도가 빠름을 확인!응답: accessToken과 refreshToken 모두 body로 클라이언트에게 전달.인증 필요 요청과, 리프레시 토큰 재발급 요청 모두 헤더의 Bearer에 accessToken이나, refreshToken을 넣어서 전달.)현재 방식: accessToken, refreshToken 모두 쿠키로 응답받고, 요청또한, 쿠키를 포함하여 전달.제로초님은, Next.js를 활용하여, 웹 사이트를 만드실 떄, 어떠한 방식으로 로그인을 구현하시는지 궁금하고, 많은 회사에서 사용하는 방식은 보통 어떤 방식인지도 알고싶습니다!
-
해결됨Next + React Query로 SNS 서비스 만들기
MSW 오류
먼저 next와 react의 버전은 각각 15버전과 19버전입니다 next 15 부터는 http.ts 의 코드가 간결하게 바뀌어서 적용해보던 중 세팅 단계에서 해당 오류가 발생하였습니다 TypeError: Cannot read properties of undefined (reading 'url' 구글에 검색해보니 최신버전에서도 발생하는 것 같습니다 ㅠㅠ
-
미해결Next + React Query로 SNS 서비스 만들기
[ERROR] MSW Server-Side 적용 실패 에러 / (Module not found Error '_http_common')
[문제점]MSW의 nodejs Server를 Server-Side 에서 실행하려고 할 때Module not found Error '_http_common'와 같은 에러 발생으로 빌드가 실패하는 상황을 겪고 있습니다. 저만 겪고 있는 상황인지 싶지만 질문 드립니다.[현상황]아래와 같이 SSR Component안에서 API를 사용하여 데이터를 받아온 후 화면을 그리고나면,export const Home = async () => { const res = await fetch("https://api.github.com/users/zerocho"); const data = await res.json(); return ( <div className="flex flex-1 items-center justify-center"> <h1>{data.name}</h1> <img src={data.avatar_url} alt={data.name} className="rouneded" /> </div> ); };아래와 같은 화면을 확인 할 수 있습니다.이를 MSW의 Server-side를 사용하기 위해서 Layout단에서 server를 listen하도록 실행하면if ( process.env.NEXT_RUNTIME === "nodejs" && process.env.NODE_ENV !== "production" ) { const { server } = require("@/mocks/http"); server.listen(); } export default function RootLayout({ children }: { children: React.ReactNode; }): JSX.Element { return ( <html lang="en"> <body className={inter.className}> <MSWProvider> <Suspense>{children}</Suspense> </MSWProvider> </body> </html> ); }아래와 같은 Build Error로 Module not found: Can't resolve '_http_common' 나게 됩니다.[찾아본 원인?]_http_common이 Node.js built-in module인데, Next.js Webpack의 config에서 해당 module을 자동 import 하지 않아서 발생하는 에러라고 합니다. (출처:https://github.com/mswjs/msw/issues/2291)[시도한 해결 방안 1]- src/instrumentation.ts 파일을 아래와 같이 추가.export async function register() { if (process.env.NEXT_RUNTIME === "nodejs") { const { server } = await import("./mocks/http"); server.listen(); } }- next.config.js를 아래와 같이 수정/** @type {import('next').NextConfig} */ module.exports = { reactStrictMode: true, transpilePackages: ["@repo/ui"], experimental: { instrumentationHook: true }, };결과 동일[시도한 해결방안 2]- next.config.js에 webpack 내용 추가/** @type {import('next').NextConfig} */ module.exports = { reactStrictMode: true, transpilePackages: ["@repo/ui"], experimental: { instrumentationHook: true }, webpack: (config, { isServer }) => { if (isServer) { if (Array.isArray(config.resolve.alias)) // server일시 browser를 제외 시킨다 config.resolve.alias.push({ name: "msw/browser", alias: false }); else config.resolve.alias["msw/browser"] = false; } else { if (Array.isArray(config.resolve.alias)) config.resolve.alias.push({ name: "msw/node", alias: false }); else config.resolve.alias["msw/node"] = false; } return config; } }; 결과 동일[추가 조사한 내용들]- 현재 github issue에 아래와 같이 등록되어 있습니다.https://github.com/mswjs/msw/issues/2291Server-Side를 사용하지 않고도 MSW를 사용할 수는 있지만, 해결 방안이 있을지 해서 질문드립니다!
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
슈퍼베이스 커넥션 셋팅이 없어서 주소 복사를 못하고 있는 상황입니다.
6분 50초에 나오는 영상처럼, 똑같이 들어가서 주소를 복사를 할려고 하는데 없어서 못하고 있습니다. 어떻게 해야 할까요.?
-
해결됨Next + React Query로 SNS 서비스 만들기
SignupModal 타입 에러에 관해서 질문드립니다!
SignupModal 에서 에러가 하나 나오는데 관련해서 질문드립니다.S2322: Type '(formData: FormData) => Promise<{ message: string; } | undefined>' is not assignable to type 'NonNullable<string | ((formData: FormData) => void | Promise<void>) | undefined>'.<br/>Type '(formData: FormData) => Promise<{ message: string; } | undefined>' is not assignable to type '(formData: FormData) => void | Promise<void>'.<br/>Type 'Promise<{ message: string; } | undefined>' is not assignable to type 'void | Promise<void>'.<br/>Type 'Promise<{ message: string; } | undefined>' is not assignable to type 'Promise<void>'.<br/>Type '{ message: string; } | undefined' is not assignable to type 'void'.<br/>Type '{ message: string; }' is not assignable to type 'void'.이런 에러가 나옵니다. formData 의 타입이 정확하지 않아서 생기는 에러 같습니다. 근데 정상적으로 실행은 됩니다.제 꺼에선 이렇게 에러가 나오는데 제로초님 화면에서는 에러가 나오는 것 같지 않아서 어떻게 그렇게 된 것인지 궁금해서 질문 남깁니다. 감사합니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
npm run build 시 에러가 발생합니다.
안녕하세요 강의 실습도중에 에러가 발생하였는데 원인을 찾지못해서 질문드립니다..1.3)실습용 백엔드 서버 세팅하기 강의에서 12:11분에 npm run seed 명령어로 시드데이터도 받아지는것을 확인했습니다. (그 이전까지의 실습도 에러없이 정상적으로 실행했습니다.) 이후에 npm run build를 실행해보니 아래와 같은 에러가 발생해서 질문드립니다.=================================C:\study\React\onebite-books-server-main>npm run build> onebite-books-server@0.0.1 build> nest buildsrc/book/book.service.ts:22:29 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'.22 select: prismaExclude('Book', ['searchIndex']), ~~~~~~src/book/book.service.ts:28:29 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'.28 select: prismaExclude('Book', ['searchIndex']), ~~~~~~src/book/book.service.ts:35:29 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'.35 select: prismaExclude('Book', ['searchIndex']), ~~~~~~src/book/book.service.ts:56:29 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'.56 select: prismaExclude('Book', ['searchIndex']), ~~~~~~src/book/book.service.ts:70:31 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'.70 select: prismaExclude('Book', ['searchIndex']), ~~~~~~src/book/book.service.ts:88:29 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'.88 select: prismaExclude('Book', ['searchIndex']), ~~~~~~src/util/prisma-client-exception.filter.ts:6:15 - error TS2339: Property 'PrismaClientKnownRequestError' does not exist on type 'typeof Prisma'.6 @Catch(Prisma.PrismaClientKnownRequestError) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~src/util/prisma-client-exception.filter.ts:8:27 - error TS2694: Namespace '"C:/study/React/onebite-books-server-main/node_modules/.prisma/client/default".Prisma' has no exported member 'PrismaClientKnownRequestError'.8 catch(exception: Prisma.PrismaClientKnownRequestError, host: ArgumentsHost) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Found 8 error(s).
-
미해결Next + React Query로 SNS 서비스 만들기
usePathname 과 /explore 페이지 부분은 좀 너무 빠르네요...
밑에 수업노트에 주신 링크도 그 파일이 아니라 깃헙 레포로 연결되고, 너무 빠르네요 ㅠㅠ _component 부분 보면 RightSearchZone 컴포넌트도 없어서 좀 헤매게 되는 것 같습니다...css 내용도 갑자기 어디서 튀어나온건지 좀 파악이 어렵네요 ㅠ
-
미해결Next + React Query로 SNS 서비스 만들기
[next15] msw 질문드립니다.
기존에 강의로 msw로 코드만들었던 수강생입니다.여러개의 질문과 에러?라고할만한 사항이 있는데요.기존강의에는 http.js 파일에서 express 기반으로 서버를 만들어서 9090포트를 사용했는데요. 새로 강의하신 내용에서는 express를 배제하고 코드가 간결하게 바꿨는데 이렇게 바꾼 내용의 대해서 조금 설명 부탁드립니다. 간략히 알기로는 기존 MSW는 클라이언트(브라우저)에서 동작하기 때문에 서버에서 html 요청이 발생하기 때문에 요청을 가로챌수 없기 때문에 express썻다고 알고있습니다. 이게 맞을까요? 그리고 바뀐코드는 이런문제가 해결이 된건가요?1번의 문제가 해결되었다면, 기존의 9090 서버포트와 더불어 npm run mock를 실행하여 서버를 동작했던걸로 알고있는데 이기능은 필요한가요?msw 세팅과 .env 강의부분에서 환경변수를 api에 직접 넣도록 수정했는데, 이전꺼랑 차이가 뭔가요? 추가로 클라이언트컴포넌트에서는 환경변수가 콘솔로 읽히고있는데 handler에서는 읽히지 않고있습니다. 코드는 이전강의 코드(백엔드 db연결전까지)와 같고요. 추가로 nextjs나 react를 버전업을 하지는 않았습니다. 이유가뭔지 유추해주실수있을까요?
-
미해결Next + React Query로 SNS 서비스 만들기
새로 올라온 강의 영상에 문제가 있는거 같습니다.
"섹션4 그런데 백엔드 개발자가 API를 아직 못 만들었다"의 "msw 세팅과 .env" 강좌가 8분 38초까지 영상이 검은 화면으로 나옵니다. 해당 영상에서 검은 화면 중간 중간 노란색 안내 문구는 나오는 것과 다른 영상에서는 해당 증상이 보이지 않은 것으로 보아서 제 환경에서 해결할 수 없는 문제로 보이는데, 확인 한번 부탁드립니다.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
[자체 해결]삭제하기 시 경고 alert 출력
안녕하세요. 7.7)리뷰 삭제 기능 구현하기를 하는 중인데, 혹시 바로 삭제하지 않고 중간에 alert 같은 걸로 정말 삭제할지 체크하고 그 다음에 삭제하는 식으로는 어떻게 하면 좋을까요? form 태그에 onsubmit을 달아서 중간에 끼어드는? 방식으로 해볼까 했는데, 뭔가 useActionState랑 호환을 어떻게 해야할지 잘 모르겠네요...아래 코드를 작성해서 해결했습니다! const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => { const confirmDelete = confirm(`댓글을 정말 삭제하시겠습니까?`); if (confirmDelete) { const form = e.currentTarget; form.requestSubmit(); // 폼을 강제로 제출 } };
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
데이터 패칭 관련 질문 드립니다.
안녕하세요 이정환 강사님.인스타의 위치검색기능과 비슷한 기능을 구현하고 있습니다.조회버튼을 클릭해서 serachParams를 서버컴포넌트로 전달하는 형식이 아니라 검색어가 입력되면 바로 검색해서 결과를 출력해야 하는 페이지인 경우에는 전부 클라이언트 컴포넌트로 구성해야 하나요?어떤식으로 구성해야 Next의 장점을 최대한 살릴 수 있는지 궁금합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
게시글 삭제하기
안녕하세요 제로초님! 게시글 삭제하기 기능을 구현하고 있습니다!구현해도 안되길래 스웨거가서 테스트를 하고 서버를 봤더니 오류가 나더라구요혹시 이유를 알 수 있을까요??
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
React Server Component 와 Pre Fetching
안녕하세요, 강의 애청자(?) 입니다.React Server Component가 도입된 후에 interaction이 필요한 component(Client component)만 JS Bundle에 포함시켜서 Browser로 보냄으로써 JS Bundle의 불필요한 계산(용량)을 줄일 수 있다고 말씀하셨습니다. 그렇다면 여기서 궁금한것이 React Server Component를 설명해주시기 전에 Pre Fetching에서 JS Bundle에는 사실 현재 Page에 필요한 JS Bundle만 전달된다. 이유는 용량이 커지면 hydration이 지연되기 때문. 그 후에 Pre fetching으로 나머지 연결된 모든 Page의 JS Bundle을 불러온다고 설명해주신 개념은 여전히 유지가 되는건가요?즉, 아래의 순서가 맞는지 궁금합니다.(Brower) 접속요청(Server) JS 실행-Rendering(Server to Browser) Rendering 된 HTML(Browser to User) 화면에 Rendering(Server to Browser) JS Bundle( 단, '현재 Page에 필요한', 'Client component')(Browser) Hydration(Browser to User) Interaction 가능 - TTI(Server to Browser) Pre Fetching/JS Bundle (단, '연결된 모든 Page의', 'Client component')이 순서가 맞을까요?아니라면.. Pre fetching 개념이 React Server Component 도입이후 없어진건가요?(이건 아닌거같긴한데 ㅎ)어떻게 동작하는지 궁금합니다. 항상 잘 듣고있습니다.감사합니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
게시글 삭제
안녕하세요 제로초님! 게시글 삭제하기 기능을 구현하고 있습니다!구현해도 안되길래 스웨거가서 테스트를 하고 서버를 봤더니 오류가 나더라구요혹시 이유를 알 수 있을까요??
-
미해결Next.js 시작하기(feat. 지도 서비스 개발)
키보드 어떤 거 사용하시나요
궁금합니다
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
유저의 요청으로 서버에서 "JS 실행(렌더링)"을 하는것에 관한 질문
유저가 웹 앱에 진입을 하면서 서버에 요청을 보낼 때,서버에서 JS를 실행하여 html을 채워준 뒤에 클라이언트로 보낸다고 이해하였습니다. 질문 1) 그렇다면, 서버에서는 node와 같은 자바스크립트 런타임 환경이 갖춰져 있어야 한다는 이야기일까요?? 질문 2) 더 나아가서, 넥스트 프로젝트의 배포 방법이 리액트의 배포 방법과 차이가 많이 날까요??(vercel을 사용하지 않는다는 전제하에)