묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
삭제 예정 강의는 언제 삭제 되나요? 저것때문에 수강완료를 못하면 회사에서 비용을 청구한다고 합니다~
삭제 예정 강의는 언제 삭제 되나요? 저것 때문에 수강완료를 못하면 회사에서 비용을 청구한다고 합니다~아니면 삭제 예정 강의를 듣지 않아도 수강 완료 할 수 있는 방법이 있을까요?
-
미해결처음 만난 리액트(React)
hooks console
hook 실습중인데 강의에선 클릭했을때만 콘솔이 찍히는거같은데 저는 console이 계속 찍힙니다. ㅜㅜㅜ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
루트 디렉토리
터미널에서 루트 디렉토리로 이동하라고 하셨는어떻게 해야하는지 모르겠어어떻게 해야 루트 디렉토리를 실행할 수 있나요?
-
미해결Next + React Query로 SNS 서비스 만들기
서버 액션를 통한 API 통신 시 쿠키 제어
안녕하세요. 강의를 보면서 NextAuth 없이 fetch 을 커스텀 함수로 구현 후 서버 액션에서만 호출하는 방식으로 구현해보고 싶어서 진행하고있습니다. 로그아웃 기능을 구현 중 토큰이 만료되었을때(API 호출 시 401 오류 발생으로) 쿠키를 제거하는 로직을 추가하였는데, 서버 액션에서만 가능하다는 오류가 발생합니다. 수동으로 로그아웃시에는 정상적으로 토큰이 제거되고, 정상적으로 로그인 페이지로 이동됩니다.. 정확한 상황은 페이지 진입 시 토큰 만료된 경우 middleware 에는 토큰이 있기때문에 페이지에 진입되고, API 호출 시 401 오류가 발생하고 쿠키 삭제 후 로그인 페이지로 리다이렉트되는데, 이때 middleware 상에는 토큰이 존재합니다..보통 자동 로그아웃 시 middleware 에서 쿠키 만료기간을 확인하고 제거하는 방식을 사용하는지, 저와 같이 해도 정상적으로 동작되어야하는건지 어떻게 접근해야될지 모르겠습니다 ㅠㅠ
-
해결됨손에 익는 Next.js - 마이그레이션하기
CRA에서 Next.js로 마이그레이션하기에서 compilerOptions.moduleResolution bundler 불가
안녕하세요.FatalError: error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.CRA에서 Next.js로 마이그레이션하기에서 강의를 모두 따라한 뒤 'npm run dev'를 실행하면 위 오류가 발생합니다. 찾아본 결과 TypeScript 버전이 5 이상이어야 tsconfig.json의 compilerOptions.moduleResolution에 bundler 값을 사용할 수 있는 것 같습니다.하지만 react-scripts에 요구되는 typescript의 버전은 "^3.2.1 || ^4"입니다. TypeScript를 5버전으로 올리면 lint 경고가 발생할 테니, compilerOptions.moduleResolution는 node 또는 nodenext로 설정하는 것이 현재 상황에서는 바람직하지 않나요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
업로드된 파일명 이상함
안녕하세요. 질문이 있습니다. "섹션 5 - 상품 API 서버 구성하기 - 파일 업로드 설정과 확인"에서 문의 드립니다.파일 업로드 테스트는 잘 실행 되지만 아래 그림처럼 업로드된 첨부파일 명이 이상합니다.강사님의 경우 UUID 값뒤에 OriginalFilename이 붙어있는데요, 제 경우에는 붙질 않습니다.아래 그림처럼 로그에도 이상히 값이 찍히질 않습니다.포스트 맨으로 테스트한 결과는 아래 그림과 같습니다.여기서 한가지 강사님이 실행하고 나서의 화면과 제가 실행하고나서의 화면은 차이가 좀 나는거 같습니다. 추축하자면 포스트맨으로 첨부파일이 제대로 첨부가 안된것으로도 보입니다. 아래 좀더 크게 캡춰해 보았습니다.분명히 파일을 선택해서 첨부를 했는데 위와 같은 화면으로 나옵니다.그결과 실제 업로된 파일들은 제대로 복사가 된 상태가 아닙니다. 디렉토리에 생성된 파일들은 아래와 같이 0 kb입니다.여기까지 작성된 소스는 강사님께서 진행하신 모든 내용을 다 반영하였습니다.제가 어떤걸 놓친게 있을까요? ------------------------------------------------------------------------------위를 다른 포스트맨 확장 프로그램으로 실행하니 잘 되네요. 감사합니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
url 주소에 값을 받아오지 못합니다
Request URL:http://localhost:3000/todo/read/$%7Bprefix%7D/$%7Btno%7D게시물 번호값인 tno를 int 로 받아오지 못하고 있습니다 어떻게 해야할까요?
-
해결됨한 입 크기로 잘라먹는 Next.js
사전 렌더링, SSR 질문
사전렌더링에서 설명해주신 저 일련의 과정들이 SSR, ISR, SSG 모두 공통적으로 동일하게 해당하나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
section04 포트폴리오 리뷰 진행중입니다.
createBoard(createBoardInput: $createBoardInput) { _id }이 부분에서 _id만 작성하는 이유가 fetchBoard를 할 때 게시글의을 불러오는 기준을 id로 하겠다는 의미인걸까요? 2. apolloclient 를 사용하는 코드들을 안 보고 혼자 힘으로 작성 하는게 너무 어렵습니다.. 다음 수강을 계속 들으면서 계속 사용하게 될텐데 하면서 적응해 나가야 할지, 혼자 작성이 가능할 때 까지 계속 영상 돌려보며 연습을 해야할지 모르겠어요 어떻게 하면 좋을까요?
-
해결됨한 입 크기로 잘라먹는 Next.js
클라이언트 컴포넌트가 서버에서 어떻게 렌더링되는지 궁금합니다!
초기 접속 요청을 할 때, Next.js에서는 서버 컴포넌트와 클라이언트 컴포넌트 모두 사전 렌더링을 한 후에 html을 제공하고 이후 Hydration 과정이 이루어지는 것으로 알고 있습니다.만약 클라이언트 컴포넌트에서 useState와 같은 훅을 호출해서 사용하는 경우, 서버에서 이런 컴포넌트를 어떻게 렌더링하는지 궁금합니다. 최상위 page 컴포넌트가 아래와 같이 있고, // page.tsx import Client from "@/components/client"; export default function Home() { return ( <div> initial html <div> <Client /> </div> </div> ); } page 컴포넌트에서 불러오는 클라이언트 컴포넌트가 아래와 같을 때"use client"; import { useState } from "react"; export default function Client() { const [count, setCount] = useState(0); const handleClickPlusButton = () => { setCount(count + 1); }; const handleClickMinusButton = () => { setCount(count - 1); }; return ( <div> I am Client Component <div>count: {count}</div> <div> <button onClick={handleClickPlusButton}>+</button> <button onClick={handleClickMinusButton}>-</button> </div> </div> ); } 서버에서 클라이언트 컴포넌트를 렌더링 할 때, useState와 같은 훅을 무시하고 렌더링을 진행한다고 생각하여 count에 값이 없을 것이라고 예상을 했지만, 서버에서 초기에 응답해준 html 파일을 보면 count가 0이 되어있었습니다.서버에서 클라이언트 컴포넌트를 렌더링 할 때 이런 훅을 어떻게 처리하는지, 또 만약 브라우저의 window 객체에 접근하게 될 때는 어떻게 처리하는지 궁금합니다!
-
해결됨한 입 크기로 잘라먹는 Next.js
사전 렌더링 시 JS 코드를 HTML 파일로 변환하는 거에 대해 질문이 있습니다
사전 렌더링 시 처음에 서버 측에서 리액트 앱을 실행해서 모든 리액트 컴포넌트들을 HTML로 변환한다고 하셨는데 저는 거기에 인터렉션 코드를 포함한 모든 리액트 코드가 들어있는 걸로 이해를 했었습니다.근데 그 후에 인터렉션 코드를 추가로 보내야 된다고 해서 좀 헷갈렸는데요그럼 처음에 서버에서 HTML로 변환한 JS 파일에는 인터렉션 코드를 제외한 모든 리액트 코드가 들어있는 걸까요?
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
인코딩 안됨
js 파일에서 콘솔 찍으면 한글이 계속 깨져서나와서 인코딩 설정도 euc-kr로 다 바꿨는데도 계속 디버그 콘솔창이랑 크롬 콘솔 둘다 한글이 깨져서 나오는데 혹시 왜그런지 알 수 있을까요 ..?
-
해결됨Next.js 시작하기
router를 사용할 때 왜 페이지가 갱신되는지에 대한 질문
안녕하세요.면접준비에 도움이 될 거 같고 개념적으로도 궁금해서 질문드립니다.장바구니에서 삭제를 하면 갱신되는데에 동작원리에서 처음엔 router.replace(router.asPath) 때문에 url이 변경되진 않아도 단순하게 /cart로 이동이란 동작을 해서 페이지를 다시 그린다고 생각했습니다.CartList는 CartPage의 자식 컴포넌트이다.CartPage는 getServerSideProps로 서버에서 받아온 데이터를 프롭스(carts)로 받으며, 그 프롭스를 CartList에게 전달해주고 있다.CartList는 부모컴포넌트에게 받은 carts 프롭스를 통해 장바구니 목록을 보여주고 있다.장바구니에서 상품을 삭제하면, 선택한 상품을 서버에서 삭제하고 router.replace를 통해(router.push도 동일) 현재 페이지(asPath)인 /cart로 이동한다./cart 페이지(즉, CartPage.jsx)가 리렌더링된다.리액트는 리렌더링되면 컴포넌트의 모든 코드를 다시 실행하게 된다.(고 알고 있습니다.)그로 인해 getServerSideProps가 다시 실행되고 갱신된(장바구니에서 상품을 삭제한) 데이터를 다시 CartPage에게 프롭스로 내려주게 된다.프롭스가 변경됐으니 자식 컴포넌트인 CartList도 리렌더링되어 모든 코드가 다시 실행된다.바뀐 장바구니 데이터로 보여지게 된다.라고 생각했는데요. https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props#behavior공식문서를 살펴보니 사용자가 Link 컴포넌트 또는 router를 통해 페이지를 방문할 때, Next.js는 서버에 API 요청을 보내 getServerSideProps를 실행합니다. 라고 되어있습니다. 이러면,현재 CartList는 CartPage의 자식 컴포넌트이다.CartPage는 getServerSideProps로 서버에서 받아온 데이터를 프롭스(carts)로 받으며, 그 프롭스를 CartList에게 전달해주고 있다.CartList는 부모컴포넌트에게 받은 carts 프롭스를 통해 장바구니 목록을 보여주고 있다.장바구니에서 상품을 삭제하면, 선택한 상품을 서버에서 삭제한다.router.replace를 통해(router.push도 동일) 현재 페이지(asPath)인 /cart로 이동한다. router를 통해 페이지를 방문했으므로 CartPage의 getServerSideProps가 다시 실행되고 갱신된 데이터를 CartPage에게 프롭스로 내려주게 된다.프롭스가 변경됐으니 자식 컴포넌트인 CartList도 리렌더링되어 모든 코드가 다시 실행된다.바뀐 장바구니 데이터로 보여지게 된다.이렇게 이해하면 될까요?그리고, getServerSideProps가 있는 페이지 컴포넌트는 getServerSideProps가 재실행되면 자동으로 리렌더링되게 되는 구조인가요?설명해주셨는데 제가 놓친거면 죄송합니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
완강 했어요 ^^
드디어 완강 하였네요.. 이 강의 난의도가 초급이라던데 어려운 부분도 많긴 했어요. 이제 중급 실력되는건가요? ^^;;; 스프링은 모든 내용이 이해가되긴한데 React 쪽이 어렵네요... 아마도 문법이 다양하고 오류 잡기도 어려워서 그렇겠죠? ㅎㅎㅎㅎ intelij 도 만기가 끝나가네요... visual studio code, intelij community학습 목적엔 위 2개로 개발 연습해도 되나요??다음으로 학습해야될 스프링 학습은 어떤걸 해야될까요? 잡 사이트 보니깐 코틀린 + 스프링은 쓰는 곳이 없네요... 인기가 없나... 진짜 매력적인 언어인데.
-
미해결만들면서 배우는 리액트 : 기초
변경된 api 사용시 text 안나오는 문제
변경된 api 주소를 사용하면 text가 안나오는데, 이럴 경우에는 이미지 위에 text가 나오도록 기능을 따로 만들어야 하나요?
-
해결됨한 입 크기로 잘라먹는 Next.js
랜더링된 HTML 에 대한 질문입니다
안녕하세요! NextJS 에 대한 Flow 설명중 질문이 있습니다 9:01 Timeline유저의 접속요청시 해당 페이지에 대한 내용만 랜더링하여 HTML 을 반환하는 걸까요? 그게 아니고 설명하신 모든 컴포넌트에 대한 렌더링이 이루어지는 것이라면 CSR 방식과 마찬가지로 HTML 반환이 늦어지지 않나 싶습니다또한 사전 렌더링이 NextJS 서버가 부팅시 이루어지는 행위인지 궁금합니다! (서버 부팅시 랜더링된 HTML 이 생성되는지)
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
useState
TypeError: Cannot read properties of null (reading 'useState') 현재 27강 듣고있는데 저런에러가 나오네요.. 어떤게 문제인가요ㅜㅜ
-
미해결Next + React Query로 SNS 서비스 만들기
로그인이 안 됩니다.
▲ Next.js 14.2.8 - Local: http://localhost:3000 - Environments: .env ✓ Starting... ✓ Ready in 4.2s ○ Compiling / ... ✓ Compiled / in 3.5s (1022 modules) GET / 200 in 4384ms GET / 200 in 81ms ✓ Compiled /api/auth/[...nextauth] in 364ms (493 modules) GET /api/auth/session 200 in 2386ms ○ Compiling /login ... ✓ Compiled /login in 1020ms (1035 modules) GET /api/auth/session 200 in 1561ms GET /login?_rsc=1pqm1 200 in 126ms ○ Compiling /(.)i/flow/login ... ✓ Compiled /(.)i/flow/login in 731ms (1050 modules) GET /api/auth/providers 200 in 44ms GET /api/auth/csrf 200 in 19ms [auth][error] CallbackRouteError: Read more at https://errors.authjs.dev#callbackrouteerror [auth][cause]: TypeError: Failed to parse URL from undefined/api/login at node:internal/deps/undici/undici:13178:13 [auth][details]: { "code": "ERR_INVALID_URL", "input": "undefined/api/login", "provider": "credentials" } POST /api/auth/callback/credentials? 200 in 40ms GET /api/auth/session 200 in 26ms윈도우 인데 memurai설치가 도저히 안 되어서 그냥 redis 설치했습니다. 백엔드 코드 실행시키면 redis connected라고도 뜨고, service에도 실행중도 뜨고, hello world도 잘 뜹니다.REDIS_URL=redis://127.0.0.1:6379 //백엔드 env NEXT_PUBLIC_BASE_URL=http://localhost:3000 //z-com 에 있는 .env이거로도 고쳐봤습니다. localhost:3000/login 여기로 넘어는 가는데 로그인이 안 됩니다.깃허브에서 코드 잘 가져왔고, 회원가입도 잘 되는데 로그인만 안 됩니다. 뭐가 문제일까요 ㅠㅠ
-
미해결실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
ProductFilter test 어떤 방식이 더 선호되는 방식일까요?
it('최소 가격 또는 최대 가격을 수정하면 setMinPrice과 setMaxPrice 액션이 호출된다.', async () => { const { user } = await render(<ProductFilter />); const minPriceInput = screen.getByPlaceholderText('최소 금액'); const maxPriceInput = screen.getByPlaceholderText('최대 금액'); await user.type(minPriceInput, '10'); await user.type(maxPriceInput, '10000'); expect(setMinPriceFn).toHaveBeenCalledWith('10'); expect(setMaxPriceFn).toHaveBeenCalledWith('10000'); }); 전 이런식으로 작성했습니다.단위 테스트에서 알려주신 AAA패턴을 해당 통합테스트에서도 적용하면 깔끔할 것 같아서 이렇게 작성했어요.어차피 검증할건 setMaxPriceFn & setMinPriceFn이 호출됐는지 여부라 최소금액 및 최대금액 인풋을 연속적으로 조작하게 했습니다.혹시 이렇게 하면 문제가 있는지 궁금합니다
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
versel 을 통한 배포를 하는 것과 (홈서버 + 클라우드 플래어 프록시)를 하는 것을 비교해주실 수 있나요?
안녕하세요. 우선 소개부터 드리자면 저는 FE 개발자나 그쪽을 지망하는 것은 아니고 백엔드를 업으로 하고 있고 집에서 홈서버에 제 개인 서비스를 배포할 목적으로 해당 강의를 수강하게 되었습니다. 사실 제가 프론트의 세계는 잘 몰라서 질문 드립니다. 혹시 페이지 로드 속도 & 검색 엔진 노출도가 배포 플랫폼에 영향을 받을까요?다른 말로는, versel 을 통해 프론트를 배포하는 것이 배포가 쉬운 것 이외에 서비스의 퀄리티에도 도움을 주는 장점이 있을까요 ?