npm run build 했을 때, 북 상세 페이지에서 오류 발생하시는 분들은 아래와 같이 수정해보시길 바랍니다. 3.6)네비게이팅 진행 중, npm run build를 통해 빌드 시, 아래와 같이 타입 오류가 발생 src/app/book/[id]/page.tsx Type error: Type '{ params: { id: string | string[]; }; }' does not satisfy the constraint 'PageProps'. Types of property 'params' are incompatible. Type '{ id: string | string[]; }' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag] 이유: nextjs 최신 버전에서 params가 promise 형태로 바뀌게 되면서 타입 오류가 발생하는 것으로 추정 아래와 같이 타입을 정의 import ClientComponent from "@/app/components/ClientComponent"; type PageParams = Promise<{ id: string }>; const Page = async ({ params }: { params: PageParams }) => { const { id } = await params; return ( <div> Page {id} <ClientComponent> <></> </ClientComponent> </div> ); }; export default Page;
npm run dev로 실행 시 정상 실행되고있고 npm run build 시 아래와 같이 에러가 발생하고있습니다. 제 소스코드는 아래에서 확인가능합니다 https://github.com/redinbluesky/section02 =========npm run build 시 에러 메시지======== D:\01_Study\01_REACT\02_ONE_BITE_NEXT_JS\02_VsCode_WorkSpace\section02>npm run build > section02@0.1.0 build > next build ▲ Next.js 14.2.18 ./src/components/book-item.tsx ....................................................... ✓ Linting and checking validity of types Creating an optimized production build ... ✓ Compiled successfully ✓ Collecting page data Generating static pages (0/7) [ ]인덱스 페이지 Generating static pages (2/7) [= ]Error: Minified React error #31; visit https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=%5Bobject%20Promise%5D for the full message or use the non-minified dev environment for full errors and additional helpful warnings. at Z (D:\01_Study\01_REACT\02_ONE_BITE_NEXT_JS\02_VsCode_WorkSpace\section02\node_modules\react-dom\cjs\react-dom-server.browser.production.min.js:76:490) ........................................................ Error occurred prerendering page "/lib/fetch-bo............................. Error occurred prerendering page "/lib/fetch-rendom-books". Read more: https://nextjs.org/docs/messages/prerender-error ....................................... Error occurred prerendering page "/lib/fetch-one-book". Read more: https://nextjs.org/docs/messages/prerender-error .......................................... ✓ Generating static pages (7/7) > Export encountered errors on following paths: /lib/fetch-books /lib/fetch-one-book /lib/fetch-rendom-books
먼저 유사한 질문이 있었는지 검색해보세요. 꼭 강의와 관련된 질문이 아니더라도, 최대한 답변해드리겠습니다. 건의사항도 괜찮습니다. 편하게 질문해주세요! FastAPI를 Azure Functions 로 변환하는 강의를 따라 하던 중에 환경변수를 넣었는데 Azure Functions이 안올라갑니다 .. 어떻게 해야될까요? 로컬에서는 포스트맨으로 확인했을 때 다 연결 되었습니다. 그리고 배포도 성공이라고 떴는데 함수만 안 보이네요 ㅠㅠ ++ 1. requirements.txt에 필요한 의존성이 빠져있을 경우 확인 -> requirements.txt 에 확인했을 때 오타가 있어서 오타를 고치고 다시 배포를 해보았지만 함수가 뜨지 않습니다.. 관련 링크 https://www.inflearn.com/community/questions/1337610/azure-function-deploy-%EC%8B%A4%ED%8C%A8 여기를 참고 해서 저도 스토리지가 빈값이라 설정해주었으나 함수가 뜨지 않습니다.. 2. Azure Functions 리소스에 필요한 환경변수가 빠져있을 경우 -> 일단 필요한 3개는 들어가있습니다. 사진 참고 3. 배포 대상이 될 Azure Function이 실행중인지 확인 (실행중이여야 함) -> f5 로 실행 하고 배포 했습니다 4. 그냥 VSCode 재시작 -> 똑같습니다.. ㅠㅠ
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다. 💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡 평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. 깃허브에 올라온 선생님 코드를 모두 복붙해봐도 없어지지 않는데 무엇이 문제일까요? 선생님 코드와 같은데..
회의가 끝나는 시간이 가장 일찍인 경우부터 개수를 구하는데, 만일 입력예제가 5 1 4 2 3 3 7 4 6 6 7 이런식이면 끝나는 시간순으로 구하는게, 회의실을 사용할 수 있는 최대수의 회의가 아니지 않나요? 영상의 방법이 모든경우의 예제에 적용이 되는지 궁금해서 질문 올렸습니다.
user_id = '****' user_pw = '****' from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pyperclip #드라이버 생성 driver = webdriver.Chrome() driver.implicitly_wait(10) #페이지 이동 driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/") time.sleep(1) #아이디 입력 id = driver.find_element(By.CSS_SELECTOR, '#id') pyperclip.copy(user_id) #클립보드라는 공간에 user_id를 복사해놓음. id.send_keys(Keys.CONTROL, 'v') #붙여넣기. time.sleep(1) #비밀번호 입력 pw = driver.find_element(By.CSS_SELECTOR, '#pw') pyperclip.copy(user_pw) #클립보드라는 공간에 user_pw를 복사해놓음. pw.send_keys(Keys.CONTROL, 'v') time.sleep(1) #로그인 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#log\\.login').click() # 메일 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__my_menu___eF24q > div > div > ul > li:nth-child(1) > a > span.MyView-module__item_text___VTQQM').click() driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__layer_menu_service___NqMyX > div.MyView-module__service_sub___wix9p > div.MyView-module__sub_left___AIWHR > a').click() #새창으로 전환 driver.switch_to.window(driver.window_handles[1]) # 메일쓰기 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#root > div > nav > div > div.lnb_header > div.lnb_task > a.item.button_write').click() # 받는 사람 driver.find_element(By.CSS_SELECTOR, '#recipient_input_element').send_keys('gnslgnsdl@naver.com') # 제목 driver.find_element(By.CSS_SELECTOR, '#subject_title').send_keys('연습') #서브페이지로 이동 iframe = driver.find_element(By.CSS_SELECTOR, '#content > div.contents_area > div > div.editor_area > div > div.editor_body > iframe') driver.switch_to.frame(iframe) #본문 driver.find_element(By.CSS_SELECTOR, '#log\\.login').send_keys('연습중') #다시 메인페이지로 이동 driver.switch_to.default_content() #보내기 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#content > div.mail_toolbar.type_write > div:nth-child(1) > div > button.button_write_task').click() 에러내용: 예외가 발생했습니다. ElementClickInterceptedException Message: element click intercepted: Element <a href=" https://mail.naver.com/ " target="_blank" class="MyView-module__link_service___Ok8hP">...</a> is not clickable at point (937, 789). Other element would receive the click: <a href="#" role="button" class="SettingView-module__btn_setting___Z_3Uu SettingView-module__type_top___GkN8V" aria-pressed="false">...</a> (Session info: chrome=131.0.6778.205) Stacktrace: GetHandleVerifier [0x00007FF6E6F2FB05+28789] (No symbol) [0x00007FF6E6E986E0] (No symbol) [0x00007FF6E6D3592A] (No symbol) [0x00007FF6E6D90FDE] (No symbol) [0x00007FF6E6D8EA7C] (No symbol) [0x00007FF6E6D8BC46] (No symbol) [0x00007FF6E6D8ABA1] (No symbol) [0x00007FF6E6D7CD60] (No symbol) [0x00007FF6E6DAF43A] (No symbol) [0x00007FF6E6D7C5B6] (No symbol) [0x00007FF6E6DAF650] (No symbol) [0x00007FF6E6DCF654] (No symbol) [0x00007FF6E6DAF1E3] (No symbol) [0x00007FF6E6D7A938] (No symbol) [0x00007FF6E6D7BAA1] GetHandleVerifier [0x00007FF6E726933D+3410093] GetHandleVerifier [0x00007FF6E727E7DD+3497293] GetHandleVerifier [0x00007FF6E7272A73+3448803] GetHandleVerifier [0x00007FF6E6FF7BBB+848171] (No symbol) [0x00007FF6E6EA3C3F] (No symbol) [0x00007FF6E6E9F6E4] (No symbol) [0x00007FF6E6E9F87D] (No symbol) [0x00007FF6E6E8ED49] BaseThreadInitThunk [0x00007FF906E3259D+29] RtlUserThreadStart [0x00007FF90852AF38+40] File " C:\Users\gnslg\OneDrive\ 바탕 화면\PYTHON_CRAWLLING\셀레니움실전테크닉\ 06네이버메일자동화.py ", line 36, in <module> driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__layer_menu_service___NqMyX > div.MyView-module__service_sub___wix9p > div.MyView-module__sub_left___AIWHR > a').click() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <a href=" https://mail.naver.com/ " target="_blank" class="MyView-module__link_service___Ok8hP">...</a> is not clickable at point (937, 789). Other element would receive the click: <a href="#" role="button" class="SettingView-module__btn_setting___Z_3Uu SettingView-module__type_top___GkN8V" aria-pressed="false">...</a> (Session info: chrome=131.0.6778.205) Stacktrace: GetHandleVerifier [0x00007FF6E6F2FB05+28789] (No symbol) [0x00007FF6E6E986E0] (No symbol) [0x00007FF6E6D3592A] (No symbol) [0x00007FF6E6D90FDE] (No symbol) [0x00007FF6E6D8EA7C] (No symbol) [0x00007FF6E6D8BC46] (No symbol) [0x00007FF6E6D8ABA1] (No symbol) [0x00007FF6E6D7CD60] (No symbol) [0x00007FF6E6DAF43A] (No symbol) [0x00007FF6E6D7C5B6] (No symbol) [0x00007FF6E6DAF650] (No symbol) [0x00007FF6E6DCF654] (No symbol) [0x00007FF6E6DAF1E3] (No symbol) [0x00007FF6E6D7A938] (No symbol) [0x00007FF6E6D7BAA1] GetHandleVerifier [0x00007FF6E726933D+3410093] GetHandleVerifier [0x00007FF6E727E7DD+3497293] GetHandleVerifier [0x00007FF6E7272A73+3448803] GetHandleVerifier [0x00007FF6E6FF7BBB+848171] (No symbol) [0x00007FF6E6EA3C3F] (No symbol) [0x00007FF6E6E9F6E4] (No symbol) [0x00007FF6E6E9F87D] (No symbol) [0x00007FF6E6E8ED49] BaseThreadInitThunk [0x00007FF906E3259D+29] RtlUserThreadStart [0x00007FF90852AF38+40] 메일버튼 클릭하고 하단바에 메일버튼을 클릭하려고 하니까 ElementClickInterceptedException 이 발생했어요. driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__layer_menu_service___NqMyX > div.MyView-module__service_sub___wix9p > div.MyView-module__sub_left___AIWHR > a').click() 여기서 발생하는거 같은데 이유가 뭘까요..?
새 강의영상 시작시 from hwpWings import HWP hwp = HWP() 입력하면 꼭 오류가 나고, VS code를 종료했다가 열어서 다시 실행하면 그 때 한글이 제대로 나오는데 원인과 해결 방법이 있을까요? 오류는 HWP 객체 생성 실패: (-2147221008, 'CoInitialize가 호출되지 않았습니다.', None, None) 이렇게 나옵니다.
한글에서 tab 누르며 세어보면 강의대로 9번 눌러 필드 값 넣는 곳 까지 이동하는데, press('tab')을 9개 쓰고 실행시키면 '세로쓰기'까지 뿐이 이동이 안되어 있습니다. 원인이 뭘까요? 심지어 13번 또는 15번 tab코드를 넣어야 필드까지 커서가 가기도 하고 일정하지가 않습니다. 그리고 매번 기본 시작 위치를 셀속성에서 맞춰놓고 시작해야하니 자동화의 의미가 많이 줄어드는데, 상대적인 이동이 아닌 절대적 위치 방법은 없을까요?
컴포넌트 클라이언트인 ThemeProvider를 최상위 layout의 children을 감싸면 정적인 서버 컴포넌트를 더 이상 활용할 수 없는 제약이 생기지 않나요?? nextjs에서 지향하는 방법인지 잘 모르겠습니다. 이렇게 사용해도 되는것인가요? 아니면 단순 빠른 예제실습을 위해 그렇게 하신건가요?
1-1 장 처음 보다가 Repl.it 검색헤서 들어가서 보니 화면이 강사님 화면 하곤 틀리네요, 시간이 많이 지나서 이해하고 중간쯤에 입력하는게 있어서 보니까 뒤로가기 버튼도 있고해서 이름, 직업 등 적어주니까 화면이 바뀌며 입금 해서 등록 하는 화면이 나오네요. 여기서는 뒤로 가기 해도 안되고, 나왔다 다시 들어거기도 않되고 어케하면 되나요. Repl.it 에 비용 지불 안하고 공부 하는 방법은 없나요. 있다면 어떻게 클리어 하는 방법은 ??
이 문제를 풀다가 의문이 들었는데요 visitied를 사용할 필요가 있었는지 의문이 듭니다. public static int catch_me(int cony_loc, int brown_loc){ int time = 0; Queue<int[]> q = new LinkedList<>(); //map<위치, 시간> q.add(new int[]{brown_loc,0}); Map<Integer, Boolean>[] visitied = new HashMap[200010]; for (int i = 0; i < visitied.length; i++) { visitied[i] = new HashMap<>(); } while(cony_loc <= 200000){ cony_loc += time; if(visitied[cony_loc].containsKey(time)){ return time; } for(int i=0, initialSize = q.size(); i< initialSize; i++){ int[] info = q.poll(); int currentPosition = info[0]; int currentTime = info[1]; int newTime = currentTime + 1; int newPosition ; newPosition = currentPosition - 1; if(0<= newPosition && newPosition <= 200000) { visitied[newPosition].put(newTime, true); q.offer(new int[]{newPosition, newTime}); } newPosition = currentPosition + 1; if(0<= newPosition && newPosition <= 200000) { visitied[newPosition].put(newTime, true); q.offer(new int[]{newPosition, newTime}); } newPosition = currentPosition * 2; if(0<= newPosition && newPosition <= 200000) { visitied[newPosition].put(newTime, true); q.offer(new int[]{newPosition, newTime}); } } time++; } return -1; } 딩코딩코님의 파이썬 풀이를 자바로 변환해봤을 때 이런식으로 코드가 작성이 되었는데 보통 dfs나 bfs에서 visitied는 재방문을 방지하려고 사용하는 것 같은데 이 코드상에는 재방문을 막으려는 부분이 없어보여서요 bfs 내에서 다음 초에 해당하는 위치를 q에 모두 넣게되는데 그럼 비교를 할 때 코니의 다음 시간과 브라운의 다음 시간은 반복문을 돌면서 어차피 조건문에서 체크를 하게되는데 visitied에 저장할 필요가 있나라는 생각이 들더라구요. 그래서 public static int catchMe(int cony, int brown) { int time = 0; //브라운의 next 위치를 저장할 queue 사용 Queue<int[]> q = new LinkedList<>(); q.offer(new int[]{brown, time}); while(cony <= 200_000){ cony += time; //bfs //q.size가 반복문내에서 동적으로 변경이 되므로 고정값을 구해놔야함. for(int i = 0, size = q.size() ; i < size; i++){ //q에 넣은 값을 poll int[] posTime = q.poll(); int currPos = posTime[0]; int currTime = posTime[1]; //같은 시간의 코니와 브라운의 위치를 비교하니까 visited를 사용할 필요없어보이데..? if(cony == currPos){ return time; } //다음 초에 브라운의 위치 int nextPos[] = {currPos - 1, currPos + 1, currPos * 2}; for(int pos : nextPos){ q.offer(new int[]{pos, currTime + 1}); } } time++; } return -1; } 해당 코드로 다시 작성을 해보았는데 잘되는거는 같은데 혹시 제가 잘못생각하거나 놓치고 있는 부분이 있는지 확인받고싶습니다.
초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
안녕하세요! 현재 07챕터 수강중입니다. 다름이 아니라 papagoAPI에서 ID와 PW는 ncloud에서 받으면 되는 건가요? 개발자 센터에서는 파파고 api가 안보여서요ㅠㅠ 실행이 안되어서요. url은 아래 코드 그대로 사용하면 되는거죠?? https://openapi.naver.com/v1/papago/n2mt
초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
[notice] A new release of pip is available: 23.1.2 -> 24.3.1 [notice] To update, run: C:\Users\82109\AppData\Local\Programs\Python\Python311\python.exe -m pip install --upgrade pip (ch07_env) C:\Inflearn\inflearn_chatGPT-main\ch07>python 01_ googleTrans.py Traceback (most recent call last): File "C:\Inflearn\inflearn_chatGPT-main\ch07\01_ googleTrans.py ", line 1, in <module> from googletrans import Translator ModuleNotFoundError: No module named 'googletrans' pip install googletrans==3.1.0a0 이렇게 설치했는데 계속 찾을 수 없다고 뜹니다.