묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Next + React Query로 SNS 서비스 만들기
로그인 버튼 클릭시 500에러 발생
아이디, 비밀번호를 입력하고 로그인 버튼을 누르면 500에러가 발생합니다. 9090 서버 포트는 잘 켜져있다고 뜨고, 코드 올리겠습니다.<auth.ts>import NextAuth from "next-auth"; import CredentialsProvider from "next-auth/providers/credentials"; import KakaoProvider from "next-auth/providers/kakao"; export const { handlers: { GET, POST }, auth, signIn, } = NextAuth({ pages: { signIn: "/i/flow/login", newUser: "i/flow/signup", }, providers: [ CredentialsProvider({ async authorize(credentials) { // credentials 안에 id창에서 입력하는 정보다 담겨있음 const authResponse = await fetch(`${process.env.AUTH_URL}/api/login`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id: credentials.username, password: credentials.password, //next-auth의 credentials에는 username, password로 고정되어 있어서 이를 바꿔줌 }), }); //로그인 실패시 if (!authResponse.ok) { return null; } const user = await authResponse.json(); return user; }, }), //kakao로그인을 사용할때 // KakaoProvider(), ], }); <LoginModal.tsx>"use client"; import style from "@/app/(beforeLogin)/_component/login.module.css"; import { signIn } from "next-auth/react"; import { useRouter } from "next/navigation"; import { ChangeEventHandler, FormEventHandler, useState } from "react"; export default function LoginModal() { const [id, setId] = useState(""); const [password, setPassword] = useState(""); const [message, setMessage] = useState(""); const router = useRouter(); const onSubmit: FormEventHandler<HTMLFormElement> = async (e) => { e.preventDefault(); setMessage(""); try { await signIn("credentials", { username: id, password, redirect: false, }); //kakao, naver로 바꿀 수 있음 //client 일때는 next-auth/react의 signIn을 사용 //server 일때는 @/auth의 signIn을 사용 router.replace("/home"); } catch (error) { console.log(error); setMessage("아이디와 비밀번호가 일치하지 않습니다."); } }; const onClickClose = () => { router.back(); }; const onChangeId: ChangeEventHandler<HTMLInputElement> = (e) => { setId(e.target.value); }; const onChangePassword: ChangeEventHandler<HTMLInputElement> = (e) => { setPassword(e.target.value); }; return ( <div className={style.modalBackground}> <div className={style.modal}> <div className={style.modalHeader}> <button className={style.closeButton} onClick={onClickClose}> <svg width={24} viewBox="0 0 24 24" aria-hidden="true" className="r-18jsvk2 r-4qtqp9 r-yyyyoo r-z80fyv r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-19wmn03" > <g> <path d="M10.59 12L4.54 5.96l1.42-1.42L12 10.59l6.04-6.05 1.42 1.42L13.41 12l6.05 6.04-1.42 1.42L12 13.41l-6.04 6.05-1.42-1.42L10.59 12z"></path> </g> </svg> </button> <div>로그인하세요.</div> </div> <form onSubmit={onSubmit}> <div className={style.modalBody}> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="id"> 아이디 </label> <input id="id" className={style.input} value={id} onChange={onChangeId} type="text" placeholder="" /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="password"> 비밀번호 </label> <input id="password" className={style.input} value={password} onChange={onChangePassword} type="password" placeholder="" /> </div> </div> <div className={style.message}>{message}</div> <div className={style.modalFooter}> <button className={style.actionButton} disabled={!id && !password}> 로그인하기 </button> </div> </form> </div> </div> ); } <middleware.ts>export { auth as middleware } from "./auth"; export const config = { matcher: ["/compose/tweet", "/home", "/explore", "/messages", "/search"], }; <route.ts>export { GET, POST } from "@/auth";에러 내용 :TypeError: next_dist_server_web_exports_next_request__WEBPACK_IMPORTED_MODULE_0__ is not a constructor at reqWithEnvURL (webpack-internal:///(rsc)/./node_modules/next-auth/lib/env.js:15:12) at httpHandler (webpack-internal:///(rsc)/./node_modules/next-auth/index.js:139:139) at /Users/imhwarang/projects/zerocho/z-com/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63815 at /Users/imhwarang/projects/zerocho/z-com/node_modules/next/dist/server/lib/trace/tracer.js:133:36 at NoopContextManager.with (/Users/imhwarang/projects/zerocho/z-com/node_modules/next/dist/compiled/@opentelemetry/api/index.js:1:7062)너무 길어서 다 올릴수는 없네요 에러내용을
-
해결됨개발자를 위한 쉬운 도커
cmd와 run에 대해서 궁금한점이있습니다.!
1.RUN 명령어 실행(새로운 레이어 추가)CMD["명령어"]컨테이너 실행시 명령어 지정두개의 차이점이 이렇다고 하셨는데 어차피 컨테이너를 실행하는과정에서 처음에 실행되는것은 같은것같은데 차이점이:CMD는 이미지당 1개 RUN은 여러개가 가능하며레이어의 관점에서 CMD는 추가가 안되고 RUN의경우 레이어에 추가가되는 차이가 있는걸까요??2.그리고 해당 부분에서 docker run 실행명령을 통해서 적히는 부분은 CMD로만 적히고 컨테이너가 실행이 되고나서부터 실행하는것이 run으로 기록이 된다 라고 이해하면될까요?
-
해결됨IT보안을 위한 와이어샤크 네트워크 패킷 분석 실전
강사님 저는 HTTP가 안뜨는 이유가 뭘까요?
이더넷으로 캡처하면 처음보는 포트들만 나오고, wifi로 캡처하면 TCP 등 다양하게 나오지만 HTTP 포트만 안떠요..! 설정을 잘못한 걸까요?
-
미해결Next + React Query로 SNS 서비스 만들기
[CallbackRouter Error] 회원가입->DB입력 성공-> 자동로그인 안됨
회원가입 성공 status: 201전달받고,회원가입 성공하면 전달받는 리턴객체도 잘 전달받았는데,signIn이 동작하지 않는거 같습니다.PostgreSQL 디비들어가서 보면 User테이블에 신규가입된 정보잘 입력되어있습니다. packge.json "dependencies": { "@auth/core": "^0.18.0", "@faker-js/faker": "^8.3.1", "@tanstack/react-query": "^5.17.10", "@tanstack/react-query-devtools": "^5.17.10", "classnames": "^2.4.0", "dayjs": "^1.11.10", "next": "^14.0.4", "next-auth": "^5.0.0-beta.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-intersection-observer": "^9.5.3" }, "devDependencies": { "@mswjs/http-middleware": "^0.9.2", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "cors": "^2.8.5", "eslint": "^8", "eslint-config-next": "^14.0.4", "express": "^4.18.2", "msw": "^2.0.12", "typescript": "^5" }, "msw": { "workerDirectory": "public" } }[auth][error] CallbackRouteError: Read more at https://errors.authjs.dev#callbackrouteerror[auth][cause]: TypeError: fetch failed at node:internal/deps/undici/undici:12344:11[auth][details]: { "name": "HeadersTimeoutError", "code": "UND_ERR_HEADERS_TIMEOUT", "message": "Headers Timeout Error", "provider": "credentials"}CallbackRouteError: Read more at https://errors.authjs.dev#callbackrouteerror at Module.callback (webpack-internal:///(action-browser)/./node_modules/@auth/core/lib/actions/callback/index.js:307:23) at async AuthInternal (webpack-internal:///(action-browser)/./node_modules/@auth/core/lib/index.js:65:24) at async Auth (webpack-internal:///(action-browser)/./node_modules/@auth/core/index.js:123:29) at async signIn (webpack-internal:///(action-browser)/./node_modules/next-auth/lib/actions.js:55:17) at async onSubmit (webpack-internal:///(action-browser)/./src/app/(beforeLogin)/_lib/signup.ts:53:9) at async /Users/jungjuyoung/dev/x-clone/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:39:406 at async t0 (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:38:5773) at async rh (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:39:23636) at async doRender (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/base-server.js:1391:30) at async cacheEntry.responseCache.get.routeKind (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/base-server.js:1552:28) at async DevServer.renderToResponseWithComponentsImpl (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/base-server.js:1460:28) at async DevServer.renderPageComponent (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/base-server.js:1843:24) at async DevServer.renderToResponseImpl (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/base-server.js:1881:32) at async DevServer.pipeImpl (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/base-server.js:909:25) at async NextNodeServer.handleCatchallRenderRequest (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/next-server.js:266:17) at async DevServer.handleRequestImpl (/Users/jungjuyoung/dev/x-clone/node_modules/next/dist/server/base-server.js:805:17) { type: 'CallbackRouteError', kind: 'error', [cause]: { err: TypeError: fetch failed at node:internal/deps/undici/undici:12344:11 { cause: [HeadersTimeoutError] }, name: 'HeadersTimeoutError', code: 'UND_ERR_HEADERS_TIMEOUT', message: 'Headers Timeout Error', provider: 'credentials' }}
-
해결됨독하게 되새기는 C 프로그래밍
강의자료 관련
강사님 강의자료 인쇄용으로 부탁드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 질문입니다.
안녕하세요 큰돌님. 모든 경우의 수 탐색 과정에서궁금한게 있어서 질문드립니다. 모든 경우의 수를 탐색하기 + 각 경우의 수에서 합 구하기 를위해 다음과 같은 코드가 구현되는 것은 이해했습니다.for (int i = 1; i < (1 << n); i++) { // i는 모든 경우의 수에서 각 케이스이다. for (int j = 0; j < n; j++) { // i에 해당하는 경우의 수에서 합 구하기위함 if(i & (1<<j)) } } 여기서 질문드리고싶은게for문에서 i=1 부터 시작하는 이유가 i=0. 즉, 하나도 안고르는 경우는 탐색할 필요가 없기 때문인가요?
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
강사님 강의자료 인쇄용으로 부탁드립니다.
강사님 강의자료 인쇄용으로 부탁드립니다!
-
미해결CloudNet@ - Amazon EKS 기본 강의
AWS VPC CNI의 ENI에서 질문이 있습니다.
안녕하세요 강의 잘 음미하고 있습니다." Core DNS파드 배포시에 ENI slot에 Secondary IP가 전부 차 있는 것을 확인하고(실제로 파드가 사용은 안하고 있지만 L-IPAM의 warm pool에서 할당만 받은 상태) 이후 slot이 가득 차 있으므로 새로운 ENI를 생성한다. 따라서 2개의 ENI가 생긴다. " 라고 말씀해 주셨습니다.그래서 노드 셀렉터걸어서 Core DNS 있는 노드에 배포해 봤는데, 첫 파드 생성 시에만 저 규칙(ENI 생성)이 적용되고, 계속해서 규칙대로 ENI가 생성되는 것은 아니고 기존 ENI 2개에 있는 Secondary IP를 가져다 쓰더라구요. 당연히 계속 ENI를 생성하는 건 비용 측면이나 네트워크 측면이나 비효율적이니 그러려니 싶겠는데, 노드에 첫 파드 생성 시에(aws-node, kube-proxy 제외)는 왜 항상 ENI가 1개는 추가로 생성되면서 시작하게 되는건가요? 그냥 ENI에 남은 IP가 있는데 쓰면 되지 않을까요? 감사합니다. 수업 내용이 꽤나 딥다이브해서 이게 이거구나 할 때가 많아서 좋습니다. ㅎㅎ
-
미해결홍정모의 따라하며 배우는 C언어
실행 파일이 안만들어져요..ㅠㅠ
분명히 똑같이 파일경로 찾아서 환경변수 안 패스에 잘 넣고 했는데.. exe 파일 자체가 뜨질 않습니다.. 잘못된 점이 있나요?
-
미해결스프링 핵심 원리 - 기본편
mainDiscountPolicy 사용 시 StartApplicationTest에서 에러가 납니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. mainDiscountPolicy를 만들고 test를 돌려봤는데 다음과 같은 에러가 납니다.StartApplicationTest를 제외하고는 다 통과합니다.잘 따라한 것 같은데 에러가 나서 질문드립니다. 어떻게 해결해야 할까요? java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@15f2eda3 testClass = spring.demo.StartApplicationTests, locations = [], classes = [spring.demo.StartApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@27912e3, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@30b6ffe0, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@24c22fe, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@72ade7e3, org.springframework.boot.test.context.SpringBootTestAnnotation@315e37a3], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
CSS 포지셔닝(clear) 관련 질문입니다.
float속성을 상속받아서 마지막 div는 제일 위로 올라가서 확인이 안된다고 하셨는데질문1) 제일 위로 올라간 이유가있나요?질문2) float속성을 상속받는다고 하셨는데 left , right둘다 상속받는건가요 아니면 마지막에 설정된 right만 상속받는건가요?
-
해결됨디자인 시스템 with 피그마
최고입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결
localhost 접속시 다른 프로젝트가 실행됩니다.
인텔리제이에서 application 실행 후 지정한 port번호로 localhost를 접속하면 현재 프로젝트가 아닌 다른 프로젝트가 실행됩니다. 캐시가 남아있는 경우일 수도 있다고 해서 브라우저 캐시를 지워보거나 시크릿으로 실행했는데도 동일합니다.어떻게 해결해야하나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
12번 암호문제 컴파일 에러가 나는 이유가 뭘까요?
package String; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class _01_12_암호_복습 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); String s = br.readLine().strip(); s = s.replace('#', '1').replace('*', '0'); StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); i += 7) { String word = s.substring(i, i + 7); sb.append((char) Integer.parseInt(word, 2)); } System.out.println(sb); br.close(); } }
-
미해결
spring security 6.2.1 버전인데요
해당 시큐리티 사용하는데요 아무리해도 list 누르면 로그인이 안될경우 로그인 창으로 가야하는데 바로 list페이지로 가버려요시큐리티가 재대로 가져오지 못하는 부분인거같은데 어떻게 해야하 할까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
paramMap과 model
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 둘 다 request 파라미터에 관한 변수들 아닌가요??근데 왜 두 변수로 나눠서 사용하는 건가요??
-
해결됨스프링 핵심 원리 - 기본편
static class
static class 설정파일왜 대부분의 테스트시 static class 를 이용해서 스프링설정을 하시나요? default class 를 이용해서 스프링 설정을 하는건 어떤지 궁금합니다.
-
미해결[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)
Notification을 실행했을때
안녕하세요Notification을 실행을 했을때 logcat 에서 Suppressing notification from package com.example.coco by user request라고 메시지가 나오고 있습니다. 그래서 알림이 안뜨는것 같습니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링 컨테이너를 테스트에 통합한 경우
강의자료에 아래의 문장이 있습니다. 순수한 자바 테스트 코드에는 당연히 @Autowired가 동작하지 않는다. @SpringBootTest 처럼 스프링 컨테이너를 테스트에 통합한 경우에만 가능하다. 이 말의 의미가 아래 2가지 경우 모두 해당되는게 맞을까요?1) @SpringBootTest 이 있는 클래스 내부에서 @Autowired 를 사용해서 의존관계주입하는 경우 2) Class 내부에 @Autowired 를 사용해서 의존관계를 표시하고 new AnnotationConfigApplicationContext(test.class) 으로 스프링 컨테이너를 생성한 경우
-
해결됨김영한의 실전 자바 - 기본편
static class
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]static class 에 대해서 설명은 다음 강의에서 해주시나요? static class 혹은 inner class 에 관해서 궁금합니다.