묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
- 
      
        
    미해결[리뉴얼] React로 NodeBird SNS 만들기
vsc 에서 npm init 설치시 오류
PS C:\Users\user\Documents\prepare\front> npm initThis utility will walk you through creating a package.json file.It only covers the most common items, and tries to guess sensible defaults.See npm help init for definitive documentation on these fieldsand exactly what they do.Use npm install <pkg> afterwards to install a package andsave it as a dependency in the package.json file.Press ^C at any time to quit.package name: (front)PS C:\Users\user\Documents\prepare\front> 터미널을열고 저도 패키지 네임 다음 react-nodebird-front를 작성하고 싶은데 어떤방법이 있을까요?
 - 
      
        
    해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
배포에 대해서 질문있습니다
만든파일을 배포하는 과정에 대해 질문이 있습니다.배운기술들로 다른것을 만들어서 ngrok에 배포하는것이 아닌 다른방법으로 배포하고 싶습니다. 상황은 이렇습니다. ・2대의 데스크톱이있습니다.・한대의 데스크톱이 서버의 역할을합니다.・또다른 데스크톱은 클라이언트 역할을합니다. vite와 node.js로 만든경우 vscode로 npm run dev하는것이 아닌 java에서 war파일을 만들어서 war파일만 교체하면되는것처럼 배포 가능한 하나의 번들형태로 만드는방법이 있나요?아니면 vite와 node.js만의 배포하는방법이있나요? 제가 배포를 경험해본 방법이 java에서 Maven으로 war파일을 만들어서 tomcat에 넣어서 사용하는방법밖에 몰라서 node.js는 어떤방법으로 로컬데스크톱에서 실행하게 하는지 궁금합니다.frontend폴더와 backend폴더가 따로 있는데 하나로 로컬데스크톱에 배포하는 방법이 있나요?
 - 
      
        
    해결됨(2025) MBTI 테스트 기반 수익형 웹사이트 만들기 - <코딩 배워 사업하자>
메타태그쪽 보고 있습니다만 helmet 라이브러리가 뭔가 잘 작동 안하네요.
보기 코드랑 똑같게 작성했는데 메타태그가 적용 안되는 것 같습니다.
 - 
      
        
    해결됨Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
Markdown MDX 관련 질문입니다.
에러화면 /mdx-page 렌더링이 안됩니다... 작업 순서패키지 설치npm install @next/mdx @mdx-js/loader @mdx-js/react @types/mdxnext.config.tsimport type { NextConfig } from 'next'; import createMDX from '@next/mdx'; const nextConfig: NextConfig = { /* config options here */ // experimental: { // typedRoutes: true, // }, images: { remotePatterns: [ { hostname: 'picsum.photos', }, { hostname: 'images.unsplash.com', }, { hostname: 'www.notion.so', }, { hostname: 'prod-files-secure.s3.us-west-2.amazonaws.com', }, ], }, pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'], }; const withMDX = createMDX({ // Add markdown plugins here, as desired }); // Merge MDX config with Next.js config export default withMDX(nextConfig); mdx-components.tsximport type { MDXComponents } from 'mdx/types'; export function useMDXComponents(components: MDXComponents): MDXComponents { return { ...components, }; }app/mdx-page/page.mdx# Welcome to my MDX page! This is some **bold** and _italics_ text. This is a list in markdown: - One - Two - Three Checkout my React component:package.json{ "name": "notion-blog-nextjs", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev --turbopack", "build": "next build", "start": "next start", "lint": "next lint", "lint:fix": "next lint --fix", "format": "prettier --write ." }, "dependencies": { "@mdx-js/loader": "^3.1.0", "@mdx-js/react": "^3.1.0", "@next/mdx": "^15.3.2", "@notionhq/client": "^3.0.1", "@radix-ui/react-select": "^2.2.4", "@radix-ui/react-separator": "^1.1.6", "@radix-ui/react-slot": "^1.2.2", "@types/mdx": "^2.0.13", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^4.1.0", "lucide-react": "^0.507.0", "next": "15.2.5", "postcss": "^8.5.3", "react": "^19.0.0", "react-dom": "^19.0.0", "react-icons": "^5.5.0", "tailwind-merge": "^3.2.0" }, "devDependencies": { "@eslint/eslintrc": "^3", "@eslint/js": "^9.26.0", "@tailwindcss/postcss": "^4.1.5", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", "eslint": "^9", "eslint-config-next": "15.2.5", "eslint-config-prettier": "^10.1.2", "globals": "^16.0.0", "prettier": "^3.5.3", "prettier-plugin-tailwindcss": "^0.6.11", "tailwindcss": "^4.1.5", "tw-animate-css": "^1.2.9", "typescript": "^5" } }
 - 
      
        
    해결됨Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
serverComponent=false일 때 쿠키 세팅을 하는 이유?
안녕하세요! supabase.ts 파일에서 createServerSideClient 함수에서 serverComponent=false일 때 쿠키 세팅을 하는 이유가 무엇인가요? 이 쿠키는 수파베이스 로그인할 때 외에 어디서 사용되나요? 코드에서는 createServerSideClientRSC, createServerSideMiddleware 함수는 사용하지 않고 있는데, 그냥 정의만 해놓은 건가요? 서버컴포넌트에서 쿠키를 조작하면 어떤 오류가 발생하나요?
 - 
      
        
    해결됨Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
getUser 에 갑자기 serverComponent가 추가된 이유?
9-1강의 수업노트 봤는데요, 코드에서 getUser 함수는 2군데서 사용되는데, 항상 인자가 serverComponent가 true로 전달되더라구요. 그러면 getUser를 사용할 때 인자를 넘기지 않고, getUser 함수는 아래와 같이 코드를 만들어도 되는 건가요?export const getUser = async () => { const supabase = await createServerSideClient(true); const user = await supabase.auth.getUser(); return user?.data?.user; };
 - 
      
        
    해결됨Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
getUser 에 갑자기 serverComponent가 추가된 이유?
9-1강의 수업노트 봤는데요, 코드에서 getUser 함수는 2군데서 사용되는데, 항상 인자가 serverComponent가 true로 전달되더라구요. 그러면 getUser를 사용할 때 인자를 넘기지 않고, getUser 함수는 아래와 같이 코드를 만들어도 되는 건가요?export const getUser = async () => { const supabase = await createServerSideClient(true); const user = await supabase.auth.getUser(); return user?.data?.user; };
 - 
      
        
    해결됨Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
useCallback의 디펜던시 배열에 supabase 넣는 이유?
const getUserInfo = useCallback(async () => { const result = await supabase.auth.getUser(); if (result?.data?.user) setUser(result?.data?.user); }, [supabase]);이 코드를 이해 못했어요. 왜 dependency 배열에 supabase가 들어가나요? userId 넣으면 왜 안되나요?
 - 
      
        
    해결됨Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
수파베이스 인증 토큰에서 개인정보 지우는 법?
안녕하세요! 수파베이스 로그인 하면, sb-로 시작하는 쿠키가 생성되는데요,이 쿠키 value를 디코딩해보면 이메일, 이름 같은 정보들이 나와서 보안에 취약할 것 같아요어떻게 하면 이러한 개인정보를 노출하지 않을 수 있을까요??
 - 
      
        
    해결됨(2025) MBTI 테스트 기반 수익형 웹사이트 만들기 - <코딩 배워 사업하자>
CloudFlare 설정 질문
안녕하세요 잘 보고 있습니다.사이트 어느정도 만들긴 했는데요.가비아를 통해 도메인 만들고 클라우드 플레어에 연결해서 쓰고 있는데 https://www.사이트명은 되는데 https://사이트명 은 안되더라고요.문제가 구글 애드센스에서는 사이트명만 적도록 되어 있어서 어떻게 설정해야 하는지 알려주실 수 있으신가요?
 - 
      
        
    해결됨한 입 크기로 잘라먹는 Next.js(v15)
강의 수강중 궁금한점이 생겨서 질문드립니다
제공해주신 백엔드 서버는 어떤 기술 스택으로 백엔드가 구성이 되었는지 궁금합니다.
 - 
      
        
    해결됨한 입 크기로 잘라먹는 Next.js(v15)
프리페칭에 대한 질문
안녕하세요. 강의를 듣고 정리하면서 제가 이해한 게 맞는지 확인하고 싶어 질문드리게 되었습니다!클라이언트 컴포넌트를 포함하고 있는 서버 컴포넌트의 경우, 프리페칭 시 RSC payroad만 미리 가져오고 이후 해당 서버 컴포넌트에 접근하게 되면 클라이언트 컴포넌트를 실행하기 위해 JS Bundle을 불러오는 건가요?페이지를 캐시 및 하드 새로고침으로 진행했을 때 아래처럼 인덱스 페이지에서 이동할 수 있는 페이지인 search페이지와 book/1페이지의 RSC payroad만 프리페칭 되어있는 걸 볼 수 있었습니다.이후 위의 Link 태그를 통해 search 페이지로 이동했을 때 아래처럼 새롭게 search 페이지의 RSC payroad가 나타나는 이유가 뭔가요? book 페이지도 똑같이 RSC payroad가 새롭게 추가되는데 이미 인덱스 페이지에서 프리페칭을 통해 RSC payroad를 불러왔는데 추가되는 이유가 궁금합니다! 2번과 연관되어 있는데 search 페이지로 이동했을 때 인덱스 페이지의 RSC payroad가 네트워크에 나타나지 않는 건 인덱스 페이지에서 이동한 것이기 때문에 프리페칭이 일어나지 않기 때문인가요? 이것도 2번과 연관된 질문입니다! search 페이지나 book/1페이지에서 새로고침을 진행하고 인덱스 페이지로 넘어갈 때는 새롭게 인덱스 페이지에 대한 RSC payroad가 나타나지는 않는데 그 이유가 궁금합니다URL에 직접적으로 book/5로 이동하게 만들었는데, 프리페칭으로 네트워크상에 인덱스와 search, book/1의 RSC 페이로드뿐만 아니라 clinet-component 파일과 searchbar 파일에 대한 JS Bundle도 함께 들어와있는데 search 페이지가 동적인 페이지여도 같은 레이아웃을 사용하고 있는 인덱스 페이지가 정적인 페이지이기 때문에 clinet-component와 searchbar의 JS Bundle이 같이 프리페칭 된 건가요?
 - 
      
        
    미해결제로베이스부터 배우는 웹개발의 개념과 바이브 코딩
커서에서 깃을 커맨드 프롬프트창에서 커밋하는 방법은 없나요? 마우스 클릭 말고요.
커서에서 깃을 커맨드 프롬프트창에서 커밋하는 방법은 없나요? 마우스 클릭 말고요.
 - 
      
        
    미해결Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
캐시 관련 질문사항이 있습니다!
안녕하세요! 캐시관련 질문 사항이 있습니다! 현재, 강의 내용에선, react query를 사용한 클라이언트측 캐시와, unstable_cached 를 사용한 서버 캐시를 둘다 같은 하나의 데이터에 적용하신 모습을 확인하였습니다. 궁금증은, 현재 블로그 목록 조회는 두개 캐시 기법이 모두 적용되어 있는데, 둘 중 하나만 캐시를 해 놓아도 될 것 같다 라는 생각이 드는데, 이게 맞는지 궁금합니다. 혹시, 하나만 선택해야 된다면 이번 블로그 목록 케이스에서는 어떤 방식의 캐시를 적용하시는걸 추천하시나요?
 - 
      
        
    해결됨(2025) MBTI 테스트 기반 수익형 웹사이트 만들기 - <코딩 배워 사업하자>
SNS 공유버튼 그룹 만들기 6:30~7:30 질문있습니다.
해쉬태그를 만들기 위해TestResult.jsx에서 아래 useState를 작성하셨는데,useEffect(() => { const testInfo = TESTS?.find((test) => test.info.mainUrl === testParam); if (!testInfo) { alert('존재하지 않는 테스트입니다.'); navigate('/'); } setRenderTestInfo(testInfo); const resultInfo = testInfo?.results?.find( (result) => result.query === resultParam ); if (!resultInfo) { alert('존재하지 않는 결과값입니다.'); navigate(`/${testInfo?.info?.mainUrl}`); } setRenderResultInfo(resultInfo); }, [testParam, resultParam, navigate]); 처음에 testParam, resultParam을 가지고 와리렌더링이 되면, useEffect 내 코드가 실행되고testInfo 변수에 값이 저장되겠죠 그리고 setRenderTestInfo(testInfo)를 통해 renderTestInfo에 저장되는 것까지 알겠습니다. <ShareButtonGroup testParam={testParam} resultParam={resultParam} renderTestInfo={renderTestInfo} />props로 넘기고const ShareButtonGroup = ({ testParam, resultParam, renderTestInfo }) => { // console.log('renderTestInfo', renderTestInfo.info.mainUrl); return ( <div> <h3>친구에게 공유하기</h3> <div> <FacebookShareButton url={`${baseUrl}/${testParam}/result/${resultParam}`} hashtag={`#${renderTestInfo?.info.mainTitle}`} > <FacebookIcon round={true} size={48} /> </FacebookShareButton> </div> </div> ); }; export default ShareButtonGroup; 해쉬태그에서 받아오면 undefined 오류로 넘어가지 않습니다. 강사님 영상은 별다른 오류가 없는데, 저는 계속 빈객체로 넘어가서 흐름을 생각해본건데, 제가 잘못 생각하고 있는 부분이 있는지 궁금합니다.
 - 
      
        
    미해결실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
grid 양옆에 margin은 어디서 설정되어있는건가요 ?
찾아보니 잘안보여서 네비게이션 밑에 필터부터 전체 마진 양옆으로 먹어진거 ...로우당 그리드 개수 설정이랑 ..
 - 
      
        
    미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
데이터 캐싱 부분에 대해 질문있습니다.
안녕하세요 현재 고급- 데이터캐싱 부분의 강의를 보고 있는데 Fresh 상태에서는 데이터를 가져온 후 저장되어 있어 이 저장된 데이터를 사용하다 Stale상태가 되면 자동으로 다시 데이터가 요청되어 가져온다 라고 이해하고 있는데 맞는걸까요?
 - 
      
        
    해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
tailwind.config.ts 파일 설치가 안되는 문제
next js 14버전, tailwind도 3.4.17로 설치하였는데, @apply 가 먹히지 않네요. 어떻게 하나요?globals.css에도 @tailwind base;@tailwind components;@tailwind utilities;입력 시, 'Unkown at rule @tailwind' 라는 메시지가 송출됩니다. tailwind.config.ts (js->ts 변경) 파일에도module.exports = { content: [ "./pages/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}", "./app/**/*.{js,ts,jsx,tsx}", "./src/**/*.{js,ts,jsx,tsx}", ], theme: { extend: { colors: { background: "var(--background)", foreground: "var(--foreground)", 철수가좋아하는색깔: "blue", 영희가좋아하는색깔: "green", }, }, }, plugins: [], }; 입력했습니다.
 - 
      
        
    미해결React Native with Expo: 제로초에게 제대로 배우기
수강노트는 어디에서 볼수있나요?
수강노트는 어디에서 볼수있나요?깃에는 최종코드만 있어서 에러가 발생해가지구요실행시키기 위해 npx expo를 많이했는데도 에러가 발생하더라구요 ERROR Error: Cannot find native module 'ExpoLocation', js engine: hermes ERROR Error: Cannot find native module 'ExponentImagePicker', js engine: hermes
 - 
      
        
    해결됨(2025) MBTI 테스트 기반 수익형 웹사이트 만들기 - <코딩 배워 사업하자>
React Build 문제
선생님 안녕하세요! 질문을 자주 남겨서 죄송합니다.방법을 찾으려고 애써봤지만 해결이 되지 않아 질문을 남기네요...우선 페이지 별 meta 태그를 넣어주기 위해 vite.config.js 파일에서 index.html이 필요한 라우팅 경로를 모두 넣어줬습니다. 대략 53개의 경로가 나오더군요.(루트 페이지,16가지 MBTI 결과*3, intro 페이지 *3, 블로그 페이지)이렇게 되니 빌드 시간 3분이 넘어가면서 빌드 중 다음과 같은 오류가 발생합니다.error during build: [Prerender Plugin] [plugin Prerender Plugin] Runtime.callFunctionOn timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed. 우선 index.html 생성을 원하는 페이지를 강의에서 보여주는 예시를 넣었을때는 아무 이상없이 잘 됩니다. 제 생각에는 생성해야 할 index.html 파일의 수가 많아서 발생하는 에러같습니다.