묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
안녕하세요, 5.3)풀라우트 캐시 3. 동적경로에 적용하기 질문
안녕하세요, 정환님 궁금한게 있습니다. 동적 경로를 갖는 page.tsx 파일 안에 generateStaticParams 라는 함수를 설정하게되면, 경로에 해당하는 모든 페이지는 모두 Static Page로 만들어지는 것으로 알고 있습니다. return하지 않은 URL Parameter를 갖는 페이지에 대해서도 동일하다고 봤었는데요그렇다면 , 도서 id999번까지 있다고 가정해볼게요return [{id:"1"}] 이렇게만 작성해도 999번까지 static page가 되는게 맞을까요 ?
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
[03-04] 디바이스 API
안녕하세요해당 수업 내용을 안드로이드로 실행시켰을때 세 가지 내용중 두 가가지는 잘 나오는데 기종정보는 alert가 안뜨는데 왜 그런걸까요 ??
-
미해결제로베이스부터 배우는 웹개발의 개념과 바이브 코딩
깃허브 버셀연동
선생님~커서에서 코드 수정하고 연동된 깃허브에 커밋도 시켜주었는데,버셀에 최종 마스터가 뜨지 않는데 왜 이런걸까요? ㅠㅠ 어제 저녁 이것땀시 너무 #&!@ 해서 ㅠㅠ커서에 '최종1'이 마스터로 된 화면이고요.. 깃허브에 최종1이 master 로 되어 있는것 같구요? 근데 버셀에서는 그전단계로만 되어 있어서요 ㅠㅠ(근데 사실 이것도 어제 저녁에 계속 마스터로 안되 있어서 버셀에 있는 프로젝트 계속 지우면서 최신 깃허브 가져온거거든요?) 깃허브에 버셀에 제대로 업뎃이 안되는데, 어디부터 봐야할지 좀 도움 좀 주세요~
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
검색을 하면 데이터가 나오지 않습니다..
index.tsx에 getStaticProps로 변경하고 검색을 하면 데이터가 나오질 않습니당..!ㅠ0ㅠ 검색을 한 뒤 페이지를 이동하면 오류 내용은 아래와 같습니다. 챗지피티한테 물어봐도 감이 안 와서 질문 올려봅니다.. import SearchableLayout from "@/components/searchable-layout"; import style from "./index.module.css"; import { ReactNode } from "react"; import BookItem from "@/components/book-item"; import { InferGetStaticPropsType } from "next"; import fetchBooks from "@/lib/fetch-books"; import fetchRandomBooks from "@/lib/fetch-random-book"; export const getStaticProps = async () => { console.log("인덱스 페이지"); const [allBooks, recoBooks] = await Promise.all([ fetchBooks(), fetchRandomBooks(), ]); return { props: { allBooks, recoBooks, }, }; }; export default function Home({ allBooks, recoBooks, }: InferGetStaticPropsType<typeof getStaticProps>) { return ( <div className={style.container}> <section> <h3>지금 추천하는 도서</h3> {recoBooks.map((book) => ( <BookItem key={book.id} {...book} /> ))} </section> <section> <h3>등록된 모든 도서</h3> {allBooks.map((book) => ( <BookItem key={book.id} {...book} /> ))} </section> </div> ); } Home.getLayout = (page: ReactNode) => { return <SearchableLayout>{page}</SearchableLayout>; };
-
미해결제로베이스부터 배우는 웹개발의 개념과 바이브 코딩
회원 가입 이메일 문의
안녕하세요 선생님..선생님 강의를 따라하다가,회원 가입한 사람 모두가 글을 쓸수 있는 낚서장 같은 블로그를 만들었는데,회원 가입 페이지나 등록 등을 커서에서 만들어서 잘 동작하는것 같고, 수파베이스에서도 세팅을 해주었는데,회원가입에서 이메일과 비번을 입력하면 제게 확인 메일이 와야 하는데 오질 않네요.이거 혹시 smtp 서비스를 추가해야 되는건가요?
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
npx prisma db push 문제 완전 해결!
아래 동일한 문제로 고통받는 분들이 계시는 것 같아서깔끔하게 정리해서 올려드립니다. 1.운영체제 및 환경설정-맥북 m1, 윈도우 11 2.이슈발생-터미널 내 npx prisma db push 입력 시, 아래 오류 발생-오류코드 : 아래 문자열3.해결방안-여러가지 해결방안이 있겠지만, 저는 아래와 같이 해결했습니다.-prisma 폴더 > schema.prisma 파일 > 14번째 줄, directUrl 삭제 (*아래처럼)변경 전변경 후-.env 파일 > directURL 설정하지 않기 (*아래처럼!!! / 단, keyword는 본인 키워드로 변경 필수!) 그리고, npx prisma db push 입력 시, 문제없이 실행!! 4.원인분석-아마도 DATABASE_URL과 DIRECT_URL을 둘 다 사용할 때, 뭔가 문제가 발생했던 것 같습니다. 물론 .env 파일 내 DIRECT_URL 키 생성 후 정상적인 값을 입력해보기도 했지만, 저는 계속 동일한 문제가 발생했기 때문에 그냥 서버 연결 방식을 1개만 선택했는데, 이 방법으로는 잘 되었습니다. 혹시나 저와 동일한 문제로 고민하실까 해서 완벽하지는 않지만, 공유드립니다. 감사합니다.
-
미해결Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
projects rules type
최신 cursor에는 project rules 작성 시에 타입을 정할 수 있는데 4가지 중에 어떤 타입으로 하면 되는지, 패턴 "app/**/*.{ts,tsx}"은 어디에 넣어야할지도 같이 업데이트 해주시면 좋을 것 같습니다 !
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
[02-03] 모바일 레이아웃 헤더
안녕하세요 ~해당 수업 그대로 했는데 실행시 헤더만 보이고 page.tsx 에 작성된<div>내용입니다 ~</div> 네 줄 내용이 안나옵니다. 수업 두세번 보면서 점검을 했는데 ..어디를 수정해야 할지 모르겠습니다.아래는 제 코드 캡처해서 올립니다.실행시는 아래처럼 내용이 안뜹니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
싸이월드 만들기 1탄 피드백 부탁드립니다.
안녕하세요! 싸이월드 만들기 1탄 피드백 부탁 드립니다. 과제 완성 후 레퍼런스 코드를 참고해서 확인도 하였는데 궁금한 점이 있습니다.figma에 있는 '오늘의 기분' select 박스 화살표 모양을 따라해 보고 싶어 아이콘을 사용했는데 아래 코드에서 select 태그 위에 아이콘이 잘 겹치도록 하는 부분이 어려운 것 같습니다. 이렇게 두 요소를 겹치도록 할 때 크기, 위치 같은 요소를 어떻게 계산하여 맞게 지정할 수 있을까요?<!DOCTYPE html> <html lang="ko"> <head> <title>정현아님의 미니홈피 :: 사이좋은 사람들, 싸이월드</title> <link href="./styles/index.css" rel="stylesheet"> <script src="https://kit.fontawesome.com/f9748babc2.js" crossorigin="anonymous"></script> </head> <body> <div class="background"> <div class="outerbox"> <div class="wrapper"> <div class="wrapper__left"> <div class="wrapper__left__header"> <div class="today"> <!-- 각각의 span 박스를 만들어서 관리 --> <span>TODAY</span> <span>0</span> <span> | TOTAL</span> <span>12345</span> </div> </div> <div class="wrapper__left__body"> <div class="left__body__header"> <div class="left__body__header__gray"></div> <div class="left__body__header__line"></div> </div> <div class="left__body__profile"> <div class="left__body__profile__content"> <i class="fa-regular fa-face-smile"></i> 이름 </div> <div class="left__body__profile__content"> <i class="fa-solid fa-envelope"></i> Phone </div> <div class="left__body__profile__content"> <i class="fa-solid fa-phone"></i> E-mail </div> <div class="left__body__profile__content"> <i class="fa-solid fa-star"></i> 인스타그램 </div> </div> <div class="left__body__body"></div> <div class="left__body__footer"> <div class="left__body__footer__title"> 오늘의 기분 </div> <div class="left__body__footer__box"> <select class="left__body__footer__select"> <option selected="true">기쁨 😊</option> <option>슬픔 😢</option> <option>화남 😠</option> <option>행복 🥰</option> </select> <span class="left__body__footer__icon"><i class="fa-regular fa-square-caret-down"></i></span> </div> </div> </div> </div> <div class="wrapper__right"></div> </div> </div> </div> </body> </html>* { box-sizing: border-box; margin: 0px; /*위 옆 공백 제거*/ } .background { width: 1024px; height: 600px; /* background-color: bisque; */ background-image: url("../images/background.png"); padding: 20px 0px 0px 20px; /*위 오른쪽 아래 왼쪽 - 시계방향*/ } .outerbox { width: 808px; height: 544px; /* background-color: tomato; */ background-image: url("../images/outerbox.png"); } .wrapper{ display: flex; flex-direction: row; /* background-color: rebeccapurple; */ padding: 32px 0px 0px 32px; } .wrapper__left { width: 208px; height: 472px; /* background-color: bisque; */ display: flex; flex-direction: column; } .wrapper__left__header { width: 100%; height: 30px; /* background-color: aqua; */ display: flex; flex-direction: row; justify-content: center; align-items: center; } .today { font-size: 9px; } .wrapper__left__body { width: 100%; height: 100%; /*형제 속성을 제외한 나머지만 가져감*/ /* background-color: steelblue; */ border: 1px solid grey; border-radius: 15px; background-color: white; display: flex; flex-direction: column; align-items: center; padding: 20px 30px; } .left__body__header { width: 100%; display: flex; flex-direction: column; } .left__body__header__gray { width: 148px; height: 133px; background-color: grey; } .left__body__header__line { border-top: 1px dotted black; margin: 12px 0px; /*상하여백 좌우여백*/ } .left__body__profile { width: 100%; display: flex; flex-direction: column; } .left__body__profile__content { height: 12px; font-size: 10px; /* margin: 0px 0px 8px 0px; */ margin-bottom: 10px; color: #999999; } .left__body__footer { /* padding: 110px 0px 0px 0px; */ width: 100%; margin-top: 100px; } .left__body__footer__title, .left__body__footer__select { font-size: 11px; } .left__body__footer__box { position: relative; margin-top: 5px; } .left__body__footer__select { width: 141px; appearance: none; } .left__body__footer__icon { position: absolute; width: 18px; height: 18px; top: 2px; right: 2px; pointer-events: none; /* 아이콘을 클릭해도 뒤의 select가 반응하도록 설정 */ } .wrapper__right { width: 524px; height: 472px; /* background-color: violet; */ }
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
실무에서 서버/클라이언트 컴포넌트를 구분하는 방법
안녕하세요, 강의 정말 잘 수강하고 있습니다.강의 수강 중에 궁금한 점이 생겨 질문 드립니다.강사님께서 말씀하신 것처럼 규모가 크고 복잡한 프로젝트의 경우는 컴포넌트의 양이 많아, 개발자가 이를 인지하지 못 하고 클라이언트 컴포넌트 아래에 서버 컴포넌트를 사용하는 경우가 자주 발생할 수 있을 것 같다는 생각이 들었습니다. 그렇다면 혹시 큰 프로젝트 내에서 이를 방지하기 위해 특별히 조치를 취하셨던 경험이나 팁이 있는지 알고 싶어서 질문드립니다. 예를 들면, 서버 컴포넌트와 클라이언트를 다른 폴더로 구분해서 분류하는 등 실무에서 실제로 사용되는 방법이 있는지 알려주시면 감사하겠습니다!
-
해결됨바이브 코딩: Next.js + FastAPI + Faster-Whisper로 음성 메모 앱 만들기
3 강의 질문
3강의에서 사용하는 코드 에디터는 어떤건가요?
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
index page에서 이미 모든 SSG 경로 생성
강의 파트 : 2.16)SSG 4.폴백옵션 설정하기. 질문 : SSG경로 생성은 /books/[id] 페이지 요청이 발생했을 경우 생성되어야 하는걸로 이해했지만, index page만 접속해도 index page에 노출되는 id 값을 가진 데이터들이 전부 /books/[id] 에 해당하는 SSG 파일이 생성되었습니다.(지금 추천하는 도서, 등록된 모든 도서)(위의 사진은 빌드 후, 인덱스 페이지 요청 시 생성된 SSG파일들 입니다.)(인덱스에서 스크롤 해보니 생성되는것을 확인했습니다.)이 상황은 next의 LInk컴포넌트 frefetch와 연관있는 경우일까요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
서버 액션의 적절한 사용
서버 액션을 사용하면api 설정을 좀 더 간단하게 해줄 수 있다는 것은 이해했습니다. 근데 그럼 이러한 서버 액션은 AppRouter에서 대부분의 api를 완전히 대체할 수 있는 걸까요? 아니면 상황에 따라서 서버 액션을 사용하기도 하고 api를 따로 만들어서 사용하기도 하고 그런건가요? 프로젝트를 만드려고 하는데 어떤 부분에서 서버 액션을 사용해야할지 정확히 감이 안잡혀서 질문 드립니다..!
-
해결됨제로베이스부터 배우는 웹개발의 개념과 바이브 코딩
vercel에 등록 중...
버셀에 등록하는데 계속 에러가 나는데.. 어떤 방법으로 이 에러를 확인 할 수 있을까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
회원가입 과제 피드백 부탁드립니다.
안녕하세요!회원가입 과제 피드백 부탁 드립니다! 그리고 추가적으로 궁금한 점이 있는데figma 처럼 라디오버튼의 기본 색상을 회색으로 변경할 수 있을까요?css 파일에서 반복되어 사용되는 속성, 값들이 있는데 이런 값들은 공통적으로 사용하는 것이 구조적으로 좋을까요?예) 아래 코드에서 .inputEmail과 .input에 설정하는 css 값들이 유사하지만 분리해서 작성 아래는 과제 관련 코드입니다! 미리 답변 감사합니다.<!DOCTYPE html> <html lang="ko"> <head> <title>회원가입</title> <link href="./02-signup.css" rel="stylesheet"> </head> <body> <div class="background"> <div class="signup"> <h2 id="title">회원 가입을 위해<br>정보를 입력해주세요<br></h2> <div> <span><br>* 이메일<br><br></span> <input class="inputEmail" type="text"> </div> <div> <span><br>* 이름<br><br></span> <input class="input" type="text"> </div> <div> <span><br>* 비밀번호<br><br></span> <input class="input" type="password"> </div> <div> <span><br>* 비밀번호 확인<br><br></span> <input class="input" type="password"> </div> <br><br> <div class="radioGender"> <div> <input type="radio" name="gender">여성 </div> <div> <input type="radio" name="gender">남성 </div> </div> <br><br> <div> <input class="agreement" type="checkbox"> 이용약관 개인정보 수집 및 이용, 마케팅 활용 선택에 모두 동의합니다. </div> <br> <hr id="line"> <br> <div> <button class="signupBtn">가입하기</button> </div> </div> </div> </body> </html>* { box-sizing: border-box; } body { display: flex; justify-content: center; align-items: center; } .background { width: 670px; height: 960px; border-radius: 20px; border: 1px solid #AACDFF; box-shadow: 7px 7px 39px 0px #0068FF40; display: flex; justify-content: center; align-items: center; } .signup { width: 470px; display: flex; flex-direction: column; } .signup span { color: #797979; } .inputEmail { width: 100%; border: none; border-bottom: 1px solid #0068FF; } .input { width: 100%; border: none; border-bottom: 1px solid #CFCFCF; } .radioGender { display: flex; justify-content: center; align-items: center; gap: 30px; accent-color: #D2D2D2; } .agreement { font-size: 14px; } .signupBtn { width: 100%; height: 75px; border-radius: 10px; border: 1px solid #0068FF; background: #FFFFFF; color: #0068FF; font-size: 18px; } #title { font-size: 32px; color: #0068FF; } #line { width: 100%; height: 1px; border: none; background-color: #E5E5E5; }
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
book 페이지 스트리밍 적용
book 페이지는 일부는 정적으로 실행되고,일부는 동적으로 실행되는 걸로 알고 있습니다.generateStaticParams에 설정된 id는 정적으로,설정되지 않은 id는 동적으로 실행된 후 이후부터정적으로 실행됨위와 같이 알고 있는데만약 이러한 페이지에 loading.tsx를 만들어서적용한다면, 새로운 id로 요청할 때만스트리밍이 적용되는 것이라고 이해하면 될까요?이전 강의에서 generateStaticParams에 설정된id는 fetch와 같은 동적 함수가 있더라도 정적 페이지처럼 저장된 데이터를 가져온다고 기억해서요
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
에러 어떻게 고치나요?ㅠㅠ
에러 어떻게 고치나요?
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
codegen practice 서버 접속 불가 문제
yarn codegen 명령어 실행 시, ✖ Failed to load schema from http://main-practice.codebootcamp.co.kr/graphql:Unexpected response: "unconditional drop overload"이와 같은 에러가 뜨네요. 혹시 서버가 지금 잠시 닫힌걸까요? graphql로도 접속이 안되어서 문의드립니다.
-
해결됨인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트
3000포트 겹치네요
혹시 헤메시는 분들을 위해next.js nest.js 모두 기본 포트를 3000번 사용합니다. 간단하게 수정하시려면 backend/main.ts파일에서 app.listen(port)를 변경 하셔서 사용하시면 됩니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
styled.span / styled.input "CSS 자동완성"
확장프로그램 설치, "vscode-styled-components"ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡimport styled from에서 경로 쓸 때 백틱금지🤬