묻고 답해요
140만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
getServerSideProps cache가 되지 않을 때
안녕하세요 강사님. getServerSideProps 강의를 보고 실습중에 캐시가 되지 않아 질문드립니다. 다음과 같이 코드를 작성하고, getServerSideProps 페이지에서 로드된 html 문서의 헤더를 보면 캐시 정보가 나오지 않고 캐시가 되지 않는데 이유를 알 수 있을까요..?import type { GetServerSideProps, NextPage } from 'next'; type Props = { data: number; }; const Example: NextPage<Props> = ({ data }) => { return ( <main> <h1>getServerSideProps Page!</h1> <p>값: {data}</p> </main> ); }; export default Example; export const getServerSideProps: GetServerSideProps = async ({ res }) => { res.setHeader( 'Cache-Control', 'public, s-maxage=5, stale-while-revalidate=10' ); const delayInSeconds = 2; const data = await new Promise((resolve) => setTimeout(() => resolve(Math.random()), delayInSeconds * 1000) ); return { props: { data }, }; };
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
Next.js13 에서 getStaticProps 관련해서 질문드립니다!
안녕하세요! 강의 잘보고있습니다 :)next.js 13 버전으로 create-next-app 으로 설치하여 강의를 듣고있는데요,섹션1 > getStaticProps 강의내용대로 동일코드를 입력했지만props로 넘긴 값을 받아오질 못하더라구요.. console.log를 찍어봐도 안넘어와서 문의드립니다ㅠㅠ 아래와같이 입력했고 /app/section1/page.tsx로 만들었습니다.관련 깃헙소소는 : https://github.com/simjieun/next13 여기에 있습니다! 한번 확인부탁드리겠습니다ㅠㅠimport { NextPage } from "next"; interface Props { second: number; } const Example: NextPage<Props> = ({ second }) => { return ( <main> <h1>getStaticProps Page</h1> <p>{second}</p> </main> ); }; export default Example; export async function getStaticProps() { const delayInSecond = 2; const second = await new Promise((resolve) => { setTimeout(() => { resolve(Math.random()); }, delayInSecond * 1000); }); return { props: { second, }, }; }
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
git 관련 질문
안녕하세요. 최근 강의를 수강을 시작하였는데요. nextjs가 13버전으로 바뀜에 따라 강의 에 맞게 소스 코드를 받아서 진행하려고 합니다. git checkout 으로 0-2 branch로 이동하고 여기서 부터 이어하려고 했으나, error: Your local changes to the following files would be overwritten by checkout: pages/section1/clientSideRendering.tsx pages/section1/getServerSideProps.tsxPlease commit your changes or stash them before you switch branches.Aborting 변경점이 있는것 같아 해당 branch로 이동이 안되는것 같습니다!$ git stash && git pull origin master && git stash pop임시 저장소로 옮기고 pull을 하려고 했으나 git@github.com: Permission denied (publickey).fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists. 키가 없어서 안되는것 같습니다! 혹시 이런경우에 어떻게 해결해야 할지 알 수 있을까요?
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
콘솔이 터미널에 찍힙니다.
안녕하세요 선생님 콘솔을 찍으면 자꾸 브라우저 개발자 도구 콘솔에서 안보이고 터미널에서만 보이는데 이유가 뭔지 알 수 있을까요? 해당 컴포넌트가 server client component라 그런걸까요?'use client'; 라고 적은 컴포넌트에서는 콘솔이 잘 찍힙니다.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
getStaticPaths로 각 매장의 상세 페이지 만들기
안녕하세요! 강의 수강 중 에러 원인을 모르겠어서 문의드립니다.next.js 최신 업데이트 버전을 사용하고 있어 동적 페이지 아래와 같이 생성 후 동일한 코드를 작성하였습니다. getstaticpath로 페이지 생성은 되었습니다. console에 path도 잘 나타나는 것 확인했습니다!근데 getstaticprops에서의 console이 아무것도 찍히지 않습니다. 실행 자체가 되지 않는 것 같은데 아무리 찾아도 모르겠습니다ㅜㅜ 무엇이 잘못된 것일까요?ㅜㅜ
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
app폴더 방식
안녕하세요 선생님.제가 지금 npx create next app을 하면 pages가 아니라 app폴더 방식으로 버전 13이 기본으로 되어 있는 것 같습니다.13 버전으로 공부해도 괜찮을까요? getStaticProps함수 등 여러가지 기능이 바뀌었을 것 같아서요
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
Next.js 스타일링 방식 결정
Next.js 에서 스타일링을 하는 방법들이 다양한 것으로 알고 있습니다.css-in-js도 제공하는 styled-jsx아니면 재설정 해서 styled-component, emotion ..... 등등프로젝트 스타일링을 scss, scss module로 결정하셨는데 혹시 이유가 있나요 ?????
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
getStaticProps 사용시 무한로딩
getStaticProps강의의 2분대에 나오는 코드를 동일하게 작성하고 npm run dev를 입력해서 localhost:3000/section1/getStaticProps 로 접속을 했는데 개발자도구에서 보니 계속 pending으로만 되어있고 빈 화면으로 계속 로딩중 상태에서 변화가 없는데 왜그런건가요? 콘솔에 별다른 에러도 안뜹니다 getStaticProps함수를 주석처리해주면 정상적으로 접속이 되는데 해당 함수를 사용하기만 하면 이렇게 접속이 안돼요
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
안녕하세요 용주님 질문이 있습니다~
server state 관리를 swr 말고 react-query를 사용하려고 합니다.아래와 같이 해당 queryKey를 가지고 stores에 대한 data를 전역으로 관리하고 싶었는데, fetchFunction 자리에 stores props가 들어갈 수 없어서 처음에 어떻게 initialdata를 가져올 수 있을지 잘 모르겠습니다.. react-query는 수업때 배우진 않지만 혹시 아시는 부분이 있다면 알려주시면 감사하겠습니다 !!const { data } = useQuery([queryKey], fetchFun)
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
site-map ssr 작성 시 문제점
강의에 나온 https://www.npmjs.com/package/next-sitemap 라이브러리를 받고문서 따라서 server side sitemap (getServerSideSitemap) 을 보고문서대로 경로 만들고 라우터 만들어서getServerSideSitemap() 로 리턴하여 사이트맵을 생성하였습니다..next 에 server-sitemap.xml.body이 잘 만들어졌습니다문제는 한 파일에 15만개가 넘게 작성이 된 것입니다.구글 검색엔진에서 사이트맵의 URL 50,000개로 제한두고 있습니다.문서따라서 config 에 sitemapSize: 10000,설정을 적용하여도 스플릿팅 되지 않습니다. 어떻게 해결해야 하나요? node: 18.15.0"next-sitemap": "4.0.9""next": "^13.4.2",
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
vercel로 배포를 했을때 local db에 어떻게 액세스 할 수 있을까요?
포트포워딩으로 외부에서 db에 접속가능하게끔 포트 뚫어주고 테스트 해봤습니다. build한뒤 start 했을때 해당 local db에 데이터 삽입 되는거 까지 확인했고 폰으로 와이파이 연결끊고 접속도 해서 적용되는것 또한 테스트 해봤습니다. 하지만 vercel에서 배포를 하게되면 요청은 처리 되지만 Application error: a client-side exception has occurred (see the browser console for more information). 해당 오류가 발생하게 되네요.prisma + mysql db 사용중입니다. env 설정, axios url까지 다 맞는데 왜 안되는걸까요...? vercel postgre beta 버전으로 연동하면은 되기는 하지만 저는 local db에 연결해서 배포를 하고 싶습니다. 하지만 찾아봐도 vercel이랑 db 연동하는 방법은 잘 나오지않네요.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
스토어 json 가져올 때, '.default' 를 하는 이유?
const stores = (await import('../public/stores.json')).default;라고 next api routes로 변경전에 json 파일을 가져오는데, '.default' 를 붙이는 이유가 있을까요?정확히 무슨 의미인지 알고 싶습니다.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
nextjs link / sass + css.module 사용시 경고 문제
<Link href={`/search/${storeName}`}>{`${idx + 1} ${storeName}`}</Link>이렇게 만들고 링크된 페이지는 (href로 이동하는 페이지는) sass + css.module로 스타일링 하고 있습니다이 경우사진과 같은 경고 메세지가 나옵니다.(링크를 hover 시 css 파일을 미리 가져오는데 사용되고잇지 않은 상태)https://nextjs.org/docs/pages/api-reference/components/link#if-the-child-is-a-tag를 보고<Link href={href} passHref legacyBehavior> <RedLink>{name}</RedLink> </Link>와 같이 작성하엿으나 여전히 문제가 지속됩니다.이 경고메세지의 해결방법을 알수있을까요?비슷한 문제인건지 정확하게 확인은 안했지만본 강의 마지막 커밋에서도 동일한 경고가 발생합니다.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
vercel 배포 후 지도서비스가 네이버 API key인증 실패관련문의..
안녕하세요~버셀에 프로젝트를 베포할때 .env 파일에 있는NEXT_PUBLIC_NCP_CLIENT_ID와 키넘버를 vercel에 직접 입력했는데요..env 파일도 있고요. 결론적으로 둘다 입력하고 파일을 가지고 있는 경우에는 네이버 클라우드에 도메인을 등록하더라도 API Key 인증에 실패되나요?페이지를 새로고침 했을 시 지도가 잠깐 정상적으로 떳다가 바로 인증에 실패했다고 뜨지 않습니다 ㅠㅠ
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
설치단계 오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 저는 지금 막 시작한 코린인데요 . 지금 사실 최신 버신에서는 설치할떄 물어보는게 많더라구요. 그런데 영상처럼 설치후에, npm run dev를 했는데 에러가떠서 영상에는 제가 잘못아는진모르겟지만 자세히설명이안되있어서 막혀있습니다 ㅠㅠ어떡하죠?
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
getStaticPaths-> getStaticProps
export const getStaticPaths: GetStaticPaths = async () => { const stores = (await import('../public/stores.json')).default; const paths = stores.map((store) => ({ params: { name: store.name } })); return { paths, fallback: false }; }; export const getStaticProps: GetStaticProps = async ({ params }) => { const stores = (await import('../public/stores.json')).default; const store = stores.find((store) => store.name === params?.name); return { props: { store } }; };getStaticPaths에서 리턴하는 paths가 getStaticProps 매개변수 params인가요??
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
[Next.js에 Private Route 관련문의]
안녕하세요. 강의 잘 보고 있습니다. 질문이 몇가지있어 문의드립니다. 1. Private Route 관련로그인된 유저만 접근할 수 있는 페이지 라우팅 경로를 아래와 같이 만들어 볼려고 하는데 next-auth에 useSession, getServerSession 으로 페이지 마다 각각 접근 제한하는 방식 말고 app/my 폴더에서 하위에 모두 접근을 제한 하는 방식이 있는지 궁금하여 문의 드립니다.app/my/profiles/page.tsx app/my/membership/page.tsx app/my/qna/page.tsx 2. API 공통 에러 처리 관련API호출시 not-found.tsx를 사용해서 API 경로 404를 json으로 보내줄 수 있는지 궁금합니다.그리고 app/api/test/route.ts 에서 각각 try catch로 익셉션을 체크 해서 http 500을 리턴하는 방식말고 middleware에서 공통으로 오류 처리를 할수 있는지 궁금합니다.middleware.ts로 로그인 체크 하는 코드는 많이 검색이 되는데 공통으로 오류 처리는 검색이 딸려서 그런지 찾을수가 없네요.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
18강 useStores 관련 질문
안녕하세요, 강의 잘 듣고 있습니다.18강에서 궁금한 점이 있어 질문드립니다. useStores 함수에서 return 값에 다음과 같이 괄호가 들어가 있는 이유가 무엇인가요?return { initializeStores, } 답변 주시면 감사하겠습니다.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
스타일링 명시도 질문 (@layer)
@layer base { #__next { display: contents; } }#__next를 레이어 두어 스타일링 명시도를 낮춘 것에 대한 이유가 궁금합니다.혹시 next.js 내부에서 (프레임워크 내부에서) id : __next 를 스타일링하면 내가 작성한 코드보다 우선시 되도록 하기 위함인가요??
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
캐시 stale 질문입니다.
안녕하세요 강의 감사합니다. 잘듣고잇습니다.헤더에서 처음보는 값이 잇는데x-nextjs-cache:STALEhit는 알겟습니다. stale이 라고 표기되는 기준이 무엇인가요?서버의 최신 값이 아닌걸 어떻게 알죠?revalidate 되기 전에는 hit 로 표기되고revalidate 되는 동안에는 stale 표기가 되는 건가요?그리고 추측이 맞다면 revalidate 되는 동안이라는건 서버에 다시 요청보내고 응답받을때 까지를 말하는게 맞을까요?(* 여기는 읽으실 필요 없습니다. 질문이랑 같이 메모한거에요그리고 revalidate 되었는데 값이 안바뀌면 캐시는 stale이라하더라도 e-tag로 2차 검증하고 태그 값이 같아서 그래도 사용한다 (강의 내용 그대로)값이 바뀌면 hit 되고 e-tag값도 갱신한다. )