[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
안녕하세요. 수강생입니다. 혹시 수업에 사용중이신 Cursor가 버전이 어떻게 되나요. 저는 1.5.9 버전인데 커서 핵심 기능과 Rules 설정하면이 좀 달라서요. 프로젝트 Rules 화면도 다르고 Add Rule시 제가 사용하는 버전은 아래와 같이 나옵니다. 어떤 Rules를 설정을 해야할지 답변 부탁드립니다. 감사합니다.
2.13) 비동기 작업 처리하기 2. Promise 강의에서, if 문을 활용한 타입 검증 시 오류인 상황(else) 에서의 reject 가 정상 동작하지 않습니다. /* Promise */ const promise = new Promise((resolve, reject) => { // 비동기 작업 실행 함수 : executor setTimeout(() => { let num = 10; num = '10'; console.log(num); if (typeof num === 'number') { // 성공일 때 호출 resolve(`${num}은 숫자입니다.`); } else { // 실패일 때 호출 reject(`${num}은 숫자가 아닙니다.`); } }, 1000 * 1); }); 위 코드에서, num 타입을 string 으로 변경했을 때 else 문이 진행되는 것으로 기대했습니다. 이때, 브라우저의 디버거에서 오류를 발생시키면서 정상 동작되지 않습니다. 터미널에서는 UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 라는 오류가 발생됩니다. catch 문 없이 reject 를 단독으로 사용하는 것에 문제가 있는 것 같은데, 예제와는 다르게 동작하는 것 같아 문의드립니다.
3:50서부터 질문인데요 강사님처럼 퍼센티지 뜨거나 그러진 않았는데 뭔가해서 다시명령어 입력하니 error:remote origin already exists 라네요 그리고 첨에 명령어 입력 했을때는 강사님처럼 %가뜨는게 아니라 새로운 팝업창이 떠서 username password 입력하라 뜨길래 다 닫았는데 이런 경우는 뭔가요?
이전 챕터에서 클라이언트 컴포넌트에 대해 다뤘을때 서버에서 사용할 수 없는 훅을 사용할 경우 클라이언트 컴포넌트를 사용해야한다고 이해하였습니다. 그 중 하나가 useEffect이고 그 이유는 useEffect는 컴포넌트가 마운트 되었을 때 즉, 브라우저에 렌더링 되었을 때 실행되기 때문이라고 이해하였습니다. 제가 생각했을 때에는 useActionState 훅은 서버에서 실행되어도 상관 없는 훅이라고 생각하는데 맞는지 궁금합니다. 만약 맞다면 useEffect 훅을 사용하지 않고 useActionState만 사용한다면 서버 컴포넌트로 사용할 수 있는 것인지도 궁금합니다.
만약에 협업을 진행하는 과정에서 제가 develop브랜치에서 feat1브랜치를 따서 작업을 한후 push한다음 pr을 만들었지만, 아직 merge되지 않은 상태에서 feat1 브랜치보다 늦게 다른 팀원이 feat2브랜치를 따서 작업을 해서 push한 후 pr에서 develop브랜치에 merge까지 된 상태인 경우. feat1브랜치 사용자는 git pull origin develop 해서 최신사항을 내려받은 후 남은 작업을 수행해야하는 것인지 궁금합니다. 또한 git pull origin develop한다고 가정했을 때, 커밋이력이 1개만 추가되는 것인지 develop 브랜치의 최신 커밋이력들을 전부 가져오는 것인지 궁금합니다.
리액트 실습 준비하기에서 npm install 까지 마치고 라이브 서버로 열려고 하는데 빈 공백만이 뜹니다. 브라우저의 개발자용 콘솔에는 Failed to load module script: Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/jsx". Strict MIME type checking is enforced for module scripts per HTML spec. 라고 떠있어요. 제미니한테 물어보니까 브라우저가 jsx를 못 읽어서라고 하네요. 열심히 여러가지 시도 해봤으나 잘 안되서 도움 요청드립니다ㅠㅠ
안녕하세요. 게시물 업로드 요청 시 500 Internal Server Error 에러가 발생합니다. 현재 코드에는 쿠키도 함께 전달되고, 네트워크 탭에서 확인해보면 formData 값도 정상적으로 전송되는 것으로 보입니다. const onSubmit: FormEventHandler = (e) => { e.preventDefault(); // formData 객체에 값 넣기 const formData = new FormData(); formData.append("content", content); preview.forEach((item) => { if (item) { formData.append("images", item.file); } }); // 전송 fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/posts`, { method: "post", credentials: "include", body: formData, }); }; 그런데 서버에서는 userId가 undefined로 들어가고 User 정보가 없다(?)는 오류가 발생합니다. 다른 분들의 Internal server error 관련 질문을 살펴봐도, 이 문 제가 프론트에서 확인할 수 있는 부분인지 잘 구분이 되지 않아 질문드립니다. 제가 어디를 중점적으로 확인해보면 좋을까요?
안녕하세요. useState의 초기값으로 함수를 넣는 경우를 처음 접해서 질문드립니다. 제가 따로 찾아본 결과 useState() 초기값으로 값이 아닌 함수를 넣어주게되면 -> 리랜더링시에 값이 평가되지않고 -> 쓸때없이 uuid가 생성되지 않아서 강의(86강 5분대)와 같이 useState 초기값으로 함수를 넣어주신게 맞나요?? 그리고 이를 lazy-initialization이라 명명하는게 맞을까요?? 좋은 강의 감사드립니다.
Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
안녕하세요! 강의 5:15초 부터의 설명에 조금만 더 자세히 설명해주시면 감사할것 같아서요! "이러한 파람즈도 프라미스로 가져와야겠죠 우리가 최신을 사용하고 있기 때문에 다시 generateMetadata 함수를"라고 스크립트(영상자막)는 나와 있는데, 이유를 설명하는 파트가 잘 안 와닿아서 혹시 설명해주실 수 있나요? 직관적으로 생각하면 export generateStaticParams에서 slug 를 params으로 가져오는데 시간이 걸리니까, 기다려야 하니까 await 으로 params를 기다리는건 알겠는데, 'params'가 왜, 어떻게 해서 Promise 타입인지 궁금합니다. 너무 두서없었네요. 정리하자면 1.왜 params 가 Promise 객체 타입인지, 코드 어디에서, 어떻게 해서 Promise 객체 타입이 되었는지 궁금합니다. 2. 혹시 params 가 Promise 객체 타입인 이유는, 그저, [slug]폴더로 동적페이지로 정의되었으니, 컴포넌트로 들어오는 입력값 {params}는 [] 안에 들어간 변수값이 들어오는 건가요? 그래서 그냥 nextjs 스펙상 무조건promise 로 params 가 주어지게 되는건가요? 너무너무 헷갈려서 그런데, 동적라우팅/정적 라우팅 별, 그리고 Clientside /serverside 별로 4가지로 나누어서 params 가져오는 방법을 설명해주실수 있나요? 너무너무 헷갈리네요.... 동적/정적라우팅에 따라 나뉘나요, client/server 에 따라 나뉘나요? 후자인걸로 생각하고 있긴 한데 맞는지 너무 헷갈리네요.. 감사합니다! 좋은 하루 되세요!
안녕하세요 강사님. 08-14 강의 도입부에서 FormView는 ModelForm클래스가 아닌 Form클래스에 대한 일반적인 패턴을 구현하는데 사용한다고 말씀 주셨고 코드에서도 db저장 로직을 직접 구현해 주셨는데요. FormView에서도 form_class를 ModelForm으로 지정하면 좀 더 간결한 것 같은데 혹시 FormView에서 ModelForm을 사용하면 안되는 이유가 있을까요? [코드 예시] ㄴ강의 내 #1. FormView 활용에 나오는 오른쪽 코드에서 form_class를 ModelForm으로 만들어 form_valid를 오버라이딩 하였습니다. class PostCreateView(FormView): form_class = PostForm template_name = "blog/post_new.html" success_url = "/admin/" def form_valid(self, form): form.save() return super(PostCreateView, self).form_valid(form)
서버로부터 받아오는 Posts를 <PostList/> 컴포넌트에서 상태로 관리하는데, 이것은 전역 상태로 관리하지 않는 이유가 있을까요? postStore에서 getTotalPages를 할때, 고정된 값 100을 사용했는데, 실제 서비스라면 어떻게 처리해야하나요? postStore에서 posts.length와 같은 전체 개수를 알아야할것같은데.