172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요 next 강의를 거의 마치고 vercel에 배포까지 완료한 후 마지막 강의인 배포 후 최적화를 강사님과 동일하게 작성 후 vercel --prod 명령어를 통해 프로젝트를 다시 배포하였는데 해당 오류가 나타납니다.. ㅠㅠ book 폴더에서 오류가 나는것 같은데 혼자 해결해보려고 했으나, 원인도 잘 모르겠고 검색해도 잘 안나와서 여쭤봅니다.. -오류- -/book/[id]/page.tsx 코드- import { notFound } from "next/navigation"; import style from "./page.module.css"; import { BookData, ReviewData } from '@/types'; import ReviewItem from "@/components/review-item"; import ReviewEditor from "@/components/review-editor"; import Image from "next/image"; export async function generateStaticParams() { const response = await fetch(`${process.env.NEXT_PUBLIC_API_SERVER_URL}/book`); if(!response.ok) { throw new Error(response.statusText); } const books:BookData[] = await response.json(); return books.map((book) => ({ id: book.id.toString(), })) } async function BookDetail({bookId} :{bookId:string}) { const response = await fetch(`${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/${bookId}`); if(!response.ok) { if(response.status === 404) { notFound(); } return <div>오류가 발생했습니다...</div> } const book = await response.json(); const { id, title, subTitle, description, author, publisher, coverImgUrl } = book; return ( <section> <div className={style.cover_img_container} style={{ backgroundImage: `url('${coverImgUrl}')` }} > <Image src={coverImgUrl} width={240} height={300} alt={`도서 ${title}의 표지 이미지`} /> </div> <div className={style.title}>{title}</div> <div className={style.subTitle}>{subTitle}</div> <div className={style.author}> {author} | {publisher} </div> <div className={style.description}>{description}</div> </section> ); } async function ReviewList({bookId}:{bookId : string}) { const response = await fetch(`${process.env.NEXT_PUBLIC_API_SERVER_URL}/review/book/${bookId}`, {next:{tags:[`review-${bookId}`]}}); if(!response.ok) { throw new Error(`Review fetch failed : ${response.statusText}`); } const reviews:ReviewData[] = await response.json(); return ( <section> {reviews.map((review) => ( <ReviewItem key={`review-item-${review.id}`} {...review} /> ))} </section> ) } export async function generateMetadata({ params }: { params: Promise<{ id: string }> }) { const {id} = await params; const response = await fetch(`${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/${id}`); if(!response.ok) { throw new Error(response.statusText); } const book:BookData = await response.json(); return { title:`${book.title} - 한입북스`, description:`${book.title}`, openGraph:{ title:`${book.title} - 한입북스`, description:`${book.title}`, images:[book.coverImgUrl], } } } export default async function Page({ params }: { params: Promise<{ id: string }> }) { const resolvedParams = await params; return ( <div className={style.container}> <BookDetail bookId={resolvedParams.id} /> <ReviewEditor bookId={resolvedParams.id} /> <ReviewList bookId={resolvedParams.id} /> </div> ) }
최다빈
2025-01-14T09:12:24.927Z
댓글 2
좋아요 0
조회수 210
해결됨
[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
강의 시간이 1분이고 영상 자체가 없어서요. 그냥 학습자료만 보고 넘어가는 부분인가요? 그리고 전체 강의 코드는 어디서 다운로드 받을 수 있나요?
react react-native 하이브리드-앱 graphql next.js
희소식
2025-01-14T08:51:58.296Z
댓글 2
좋아요 0
조회수 177
미해결
처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.) - 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~ - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. 이전에 수업에 관한 코드는 pdf파일로 공유 받았는데 실전 프로젝트 코드는 어디서 받을수있나요????
python mvc sqlalchemy FastAPI backend
park
2025-01-14T05:39:13.368Z
댓글 1
좋아요 0
조회수 189
해결됨
한 입 크기로 잘라먹는 Next.js
Next 강의에서 App Router 실습을 위해서 강사님께서 올려주신 자료를 다운받으면 위 사진과 같이 강의와는 다르게 Promise 타입이 존재하여 params.id 에 오류가 발생하게 됩니다.
Full Stack 개발자
2025-01-14T05:09:56.296Z
댓글 2
좋아요 0
조회수 80
해결됨
한 입 크기로 잘라먹는 Next.js
Next 강의에서 App Router 실습을 위해서 강사님께서 올려주신 자료를 다운받으면 위 사진과 같이 강의와는 다르게 Promise 타입이 존재하여 searchParams.q에 오류가 발생하게 됩니다. 그래서 Promise 타입을 없애면 오류는 사라지지만 빌드타입에 오류가 아래와 같이 발생합니다. 어떻게 해결하면 될까요?
Full Stack 개발자
2025-01-14T04:38:24.553Z
댓글 2
좋아요 0
조회수 61
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
안녕하세요 강사님 한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지 강좌 잘듣고 있습니다. 감사합니다. 저는 자막을 켜고 보는데,아래 강좌의 자목이 잘못된 것을 발견했습니다. 5-3) JSX로 UI 표현하기 그리고, 동영상을 보다가, 일시정지하면서, 자막을 다시 확인하면서 보고 있습니다만, 혹시, 학습 편의를 위해서, 동영상 강좌 자막 대본 내용도 같이 올려주실수 없을까요? 타입스크립트, Next.js에도 자막 대본 내용도 같이 올려주시면 좋겠습니다. ㅠ
developer
2025-01-14T04:37:42.408Z
댓글 2
좋아요 0
조회수 107
해결됨
실전! FastAPI 입문
WARNING: StatReload detected changes in ' main.py '. Reloading... 에러표시와 함께 웹 리로드가 안되는거같아요 delete api 작성한것 또한 스웨거 에서 확인되지않는데 혹시 해당관련 정보 받을수있을까요
python 리팩토링 orm FastAPI pytest
parimj1
2025-01-13T15:25:45.748Z
댓글 2
좋아요 0
조회수 281
미해결
Airflow 마스터 클래스
안녕하세요 실습 진행 중 wsl을 이용해서 가상공간에서 작업을 진행하시는 것 같은데 도커데스크탑을 깔고 그 안에서 이미지들을 다운받는 식으로 작업을 하는 것과 차이가 있을까요? 제가 알기로는 터미널에서 코드 쳐서 다운 받는 것과 도커데스크탑에서 이미지 찾아서 다운 받는 것과의 차이는 없는 걸로 알고 있어서요 혹시 wsl로 작업을 하지않고 컴퓨터 두 대로 진행하려면 어떻게 해야될까요? 같은 네트워크에 있는 상태 입니다.
kosa.share05
2025-01-13T15:11:46.505Z
댓글 3
좋아요 0
조회수 202
해결됨
[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
eslint를 설치하면 이전과 달리 esling.config.mjs로 파일이 설정되며 extend나 rules의 활용이 기존과 다른 방식으로 진행되며 충돌이 일어납니다. stackoverflow나 chatGPT의 도움을 받아 동작은 되지만, 이 부분 다시 설명해주셔야 하는게 아닌지요. (기존에 설명된 부분들도 코드나 적용방식이 달라져서, 플러그인을 활용하도록 합니다) 이 부분을 스스로 혼자 찾아서 수정할 수 있는 역량이 있다면 이 강의를 듣지 않겠지요. 하루 종일 한단원도 나가지 못하고 .. 해결하려다 포기하게 되네요. 2년전에 산 강의를 시간이 없어 이제 듣는 제 문제도 있겠지만.. 이 부분 상세한 설명을 넣어주셔야 할것 같아요.
react node.js seo graphql next.js
이지은
2025-01-13T14:04:20.783Z
댓글 3
좋아요 0
조회수 428
미해결
firebase authentication 을 사용해서 회원가입을 구현 했습니다. 회원가입 페이지에서 정보를 입력하고 휴대전화에 sms를 보낸 후 인증번호를 입력하면 회원가입이 되는 것 까지 모두 정상적으로 작동합니다. 하지만 회원가입 페이지에서 sms 인증을 보낸 후 대략 1~2분 후 *Timeout at handleError ( http://localhost:3000/static/js/bundle.js:115024:58 ) at http://localhost:3000/static/js/bundle.js:115047:7 이런 오류가 발생합니다. 도통 왜 발생하는지 못찾겠습니다.. 한번만 도와주세요ㅜㅜㅜㅜ 회원가입 페이지 코드 부분 / sms 인증코드 확인 부분 const sendVerificationCode = async () => { if (!validateForm()) return; try { if (!window.recaptchaVerifier || window.recaptchaVerifier.expired) { resetRecaptcha(); } const phoneNumber = `+82${formData.phoneNumber.slice(1)}`; const appVerifier = window.recaptchaVerifier; const confirmationResult = await Promise.race([ signInWithPhoneNumber(auth, phoneNumber, appVerifier), new Promise((_, reject) => setTimeout(() => reject(new Error("Request timeout")), 120000) // 2 minutes ), ]); window.confirmationResult = confirmationResult; alert("Verification code sent!"); } catch (error) { console.error("Error sending verification code:", error); resetRecaptcha(); } }; const verifyCode = async () => { if (!inputValue.trim()) { alert("Please enter the verification code."); return; } try { const result = await Promise.race([ window.confirmationResult.confirm(inputValue), new Promise((_, reject) => setTimeout(() => reject(new Error("Verification timeout")), 180000) // 3 minutes ), ]); alert("Verification successful!"); // Handle user information here... } catch (error) { console.error("Verification error:", error); alert("Verification failed. Please try again."); } };
react firebase authentication
jourxy05
2025-01-13T14:04:14.769Z
댓글 1
좋아요 1
조회수 72
미해결
[Level 1] Qt를 이용한 Python 프로그래밍: 입문편
안녕하세요 GUI 개발 시 Qt designer 혹은 QML로 해야할 것 같은데 강사님은 주로 어떤걸로 GUI 개발을 하시는지 궁금하고, 그 이유도 함께 알려주실 수 있을까요
Nole
2025-01-13T12:55:52.156Z
댓글 2
좋아요 1
조회수 347
미해결
파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
# Quiz) 사이트별로 비밀번호를 만들어주는 프로그램을 작성하시오 # 예) http://naver.com # 규칙1 : http:// 부분은 제외 => naver.com # 규칙2 : 처음 만나는 점(.) 이후 부분은 제외 => naver # 규칙3 : 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 'e' 갯수 + "!"로 구성 # 예) 생성된 비밀번호 : nav51! domain = "http://naver.com" sitename = domain[7:(domain.find("."))] first3 = sitename[:3] length = len(sitename) count_e = sitename.count("e") print(f"생성된 비밀번호 : {first3}{length}{count_e}!")
온지윤
2025-01-13T11:46:22.939Z
댓글 1
좋아요 0
조회수 228
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
오늘 카운터앱 강의를 들으면서 새로운 파일 (section06)을 만들었는데요. 가장 기본 세팅을 하고 화면에 카운터앱 이라는 단어를 렌더링 하려고 npm run dev를 한 후 ctrl shift p 를 눌러 페이지에 들어갔는데 글자가 렌더링 되지 않길래 개발자 도구를 켜 보았더니 Failed to load module script : Expected a JavaScript module script but the server responed with a MIME type of "text/jsx". Strict MIME type checking is enforced for module scripts per HTMl spec. 라는 오류가 뜨네요. 오류 해결을 위해 업데이트도 해보고, 파일을 지웠다 새로 만들어도 보고, 지피티에 물어보거나 인터넷에 검색도 해봤는데 도저히 오류가 고쳐지지 않습니다. 혹시나 해서 이번에 새로 만든 파일 말고 section05 파일을 실행시켜 보았더니 어제는 잘 되던 파일이 오늘은 똑같은 오류가 뜨며 실행이 되지 않더라구요. 무슨 오류일까요 ㅠㅠ 제발 도와주세요 엉엉엉엉엉엉엉엉
dldbfla466
2025-01-13T10:47:32.080Z
댓글 4
좋아요 0
조회수 575
미해결
2주만에 통과하는 알고리즘 코딩테스트 (2024년)
복습하면서 자바로도 풀어봤어요 필요하신분들 확인!! https://github.com/hyukjunkim1116/algorithm-master-in-2weeks
김혁준
2025-01-13T10:39:07.736Z
댓글 1
좋아요 1
조회수 207
미해결
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
안녕하세요 스타트코딩님! 수업 잘 듣고 있는 학생입니다. 질문이 있어 글 남깁니다. 수업 듣기 전에 혼자 해볼 때 저는 soup를 사용하지 않고 find_element를 사용해서 이렇게 코드를 작성했는데 뭐가 다른 걸까요? from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pandas as pd driver = webdriver.Chrome() driver.get('https://search.shopping.naver.com/search/all?query=%EB%8B%AD%EA%B0%80%EC%8A%B4%EC%82%B4') # 스크롤 전 높이 last_height = driver.execute_script('return document.body.scrollHeight') while True: # 스크롤 끝까지 내리기 driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 대기 시간 줘야됨 !!! time.sleep(1) # 스크롤 후 높이 after_height = driver.execute_script('return document.body.scrollHeight') # 비교 (if, break) if last_height == after_height: break # 스크롤 전 높이 업데이트 last_height = after_height products = driver.find_elements(By.CSS_SELECTOR, '.product_item__MDtDF') data = [] for product in products: name = product.find_element(By.CSS_SELECTOR, '.product_title__Mmw2K').text link = product.find_element(By.CSS_SELECTOR, '.product_title__Mmw2K > a').get_attribute('href') price = product.find_element(By.CSS_SELECTOR, '.price_num__S2p_v').text.split('원')[0].replace(',', '') data.append([name, link, int(price)]) df = pd.DataFrame(data, columns = ['상품명', '상세페이지링크', '가격']) df.to_excel('네이버쇼핑.xlsx')
codingchoding
2025-01-13T09:39:25.346Z
댓글 1
좋아요 1
조회수 85
해결됨
한 입 크기로 잘라먹는 Next.js
혹시 백엔드서버를 종료해도 에러가 뜨지안고 정상가동되면 어떻게해야하나요?.. 당황스럽네요 하하 아 캐싱문제네요 강제 새로고침으로 해결했습니다. 감사합니다. 음 아니네요 여전히 이상하네요.. 전 이상하게 Footer에서 먼저 에러가 나네요. force cache가 되어있음에도.. 왜그럴까요?ㅜㅜ
codingforfun
2025-01-13T09:04:55.093Z
댓글 2
좋아요 1
조회수 485
미해결
프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
변수명에 달러표시나 다른 특수문자를 허용하신다고 했는데 _은 오류가 뜨지 않는데 달러표시는 자꾸 오류가 뜨네요 어떤 것이 문제일까요...ㅜㅜ
hapeter10
2025-01-13T09:03:58.671Z
댓글 2
좋아요 0
조회수 116
해결됨
한 입 크기로 잘라먹는 Next.js
use client 가 선언되지 않아도 searchable-layout.tsx 에서 useEffect 가 동작 하는 이유는 무엇인가요? 제가 알기론 이런 클라이언트사이드 훅들은 use client를 최상위에 선언해줘야 동작한다고 이해했었습니다..
Seungjoo Lim
2025-01-13T08:48:05.704Z
댓글 2
좋아요 0
조회수 175
미해결
React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
Home.jsx 이렇게 하고 import { useEffect, useState } from 'react'; import HomeDataLength from '../components/HomeDataLength.jsx'; import HomeSearch from '../components/HomeSearch.jsx'; import CanvasItemList from '../components/CanvasItemList.jsx'; import SearchBar from '../components/SearchBar.jsx'; import GridFlexBTN from '../components/GridFlexBTN.jsx'; import { deleteHome, createHome, getHome } from '../api/home.js'; import { v4 as uuid } from 'uuid'; import dayjs from 'dayjs'; export default function Home() { const [isGrid, setIsGrid] = useState(true); const [search, setSearch] = useState(''); const [data, setData] = useState([]); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(false); useEffect(() => { const api = async () => { setIsLoading(true); setError(false); try { const response = await getHome(''); setData(response.data); } catch (err) { setError(err); } finally { setIsLoading(false); } }; api(); }, []); const [isLoadingCreate, setIsLoadingCreate] = useState(false); const [createError, setCreateError] = useState(false); // 등록버튼 누르면 새로운 데이터 저장 const handleNewCreate = async () => { // setIsLoadingCreate(true); // setCreateError(false); // try { const id = uuid(); const newCreate = { id, date: dayjs().format('YYYY-MM-DD HH:mm:ss'), text: `${id.substring(0, 4)}-테스트`, category: '테스트', }; await createHome(newCreate); console.log(123); // const res = await getHome(); // setData(res.data); // } catch (err) { // setCreateError(err); // console.log(createError, 'createError'); // } finally { // setIsLoadingCreate(false); // } }; const handleText = text => { const searchData = data.filter(d => d.text.toLowerCase().includes(text.toLowerCase()), ); if (searchData.length === 0) { setSearch(null); } else { setSearch(searchData); } }; const handleDelete = async id => { // const newData = data.filter(d => d.id !== id); // setData(newData); await deleteHome(id); }; return ( <> <> <div className="flex flex-col md:flex-row justify-between items-center"> <button className="hover:bg-blue-400 bg-blue-500 text-white rounded-md text-bold p-3" onClick={handleNewCreate} > 등록하기 </button> {isLoadingCreate && <p>등록중</p>} {createError && <p>{createError}</p>} <SearchBar handleText={handleText} /> <GridFlexBTN setIsGrid={setIsGrid} isGrid={isGrid} /> </div> <HomeDataLength data={data} error={error} isLoading={isLoading} /> <HomeSearch search={search} /> {!isLoading && !error && ( <CanvasItemList data={data || []} search={search} isGrid={isGrid} handleDelete={handleDelete} /> )} </> </> ); } home.js 파일은 아래와 같은 상태이면 import { home } from './http'; // 목록 조회 export const getHome = () => { return home.get('/'); }; // 등록 export const createHome = newCreate => { try { console.log('ㅅㅣ작'); } catch (error) { console.log('에러'); } finally { console.log('종료'); } // debugger; return home.post('/', newCreate); }; // 수정 // 삭제 export const deleteHome = id => { return home.post('/', id); }; db는 server-json을 사용하고 있습니다. 그런데 get 요청을 할때는 잘 작동하는데 post로 등록하거나 삭제할때는 db에 정상 등록, 삭제되는데 화면이 새로고침이 되버리는 상태입니다. Home.jsx 화면이 리렌더링이 되도록 하고싶은데 새로고침은 왜 그런지 모르겠습니다. postman으로도 post로 db에 저장했는데 리액트 화면이 자동으로 새로고침 되버립니다. 구글링도 해봤는데 해결이 안되서 문의드립니다. 혹시나 해서 db.json이 변경되면 화면도 변경될까 싶어서 을 db.json --watch로만 해보고 --watch도 없애봤는데 안됩니다. const handleNewCreate = async () => { console.log('시작1'); const id = uuid(); const newCreate = { id, date: dayjs().format('YYYY-MM-DD HH:mm:ss'), text: `${id.substring(0, 4)}-테스트`, category: '테스트', }; const data = await createHome(newCreate); console.log(data, 'data'); console.log('시작2'); debugger; }; debugger를 사용했을때 이렇게 데이터 나오는데 디버거 끄는 순간 바로 화면이 새로고침 되고 있습니다. 그리고 콘솔창도 새창으로 이전 내역이 다 사라지는 상태입니다.
react React-Context react-router tailwindcss react-query
밈몀묘
2025-01-13T07:54:07.502Z
댓글 2
좋아요 0
조회수 252
미해결
위니브월드 탐험대 - 게임으로 배우는 파이썬
mission_start()move() pick() move() pick() move() pick() move() pick() turn_left() turn_left() repeat(2, move) repeat(2, move) turn_left() turn_left() say('hello, world!') mission_end()mission_start() move() pick() move() pick() move() pick() move() pick() turn_left() turn_left() repeat(2, move) repeat(2, move) turn_left() turn_left() say('hello, world!') mission_end() 이렇게 제출하였는데 오답이라네요ㅠㅠ왜그런거죠?
김유나
2025-01-13T07:44:52.870Z
댓글 0
좋아요 0
조회수 83