묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결깃헙 블로그(Github blog)로 차별화 된 나만의 홈페이지 만들기!
포스팅이 안되서 질문드립니다!
기부라는 좋은 취지에 동참하고 싶어서 인프런으로 결제해서 보고 있습니다 😃유튜브에 있는 10분만에 강의 만들기 강좌를 먼저 봐야 할 것 같아서 따라 하고 있는데, 포스팅이 되지 않습니다. 댓글을 보니 __config 파일에 published: true를 추가 하면된다고해서 추가했는데도 되지를 않습니다. 혹시 관련해서 포스팅할 수 있게 알려주실 수 있을까요?ㅠ
-
해결됨엑셀 시작하기 : EXCEL 입문 (Inflearn Original)
2.7 셀 서식 - 표시 형식(날짜)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.1900년 1월 1일부터 1로 대입되는걸 강의를 통해 알게되었습니다.실무에서 토지 지번을 자주 다룹니다.1905-1, 2105-12 ... 이런 값을 입력하면 자동으로 날짜데이터로 표시 및 실제 값 또한 날짜 데이터로 바뀌어 버립니다. 셀 서식에 어떠한 표기로도 본래의 값(지번)이 나타나지 않는데, 어떤 방법이 있을까요?
-
미해결자바 코딩테스트 - it 대기업 유제
미로의 최단거리 통로
안녕하세요 혹시 이 문제를 풀 때 꼭 dist배열을 만들어야 될까요? 제 코드를 아래 보여드립니다.바로 L를 반환하게 만들었는데 이래도 괜찮을지요? package org.youyk.inflearn.latest.sec07.Problem4; import java.util.*; class Solution1 { static int[] dx = {0,0,-1,1}; static int[] dy = {1,-1,0,0}; public int solution(int[][] board){ int answer = 0; int[][] ch = new int[board.length][board[0].length]; Queue<int[]> queue =new LinkedList<>(); int n = board.length; int m = board[0].length; queue.add(new int[]{0,0}); ch[0][0] = 1; int L=0; while(!queue.isEmpty()){ int size = queue.size(); for(int i=0;i<size;i++){ int[] poll = queue.poll(); if(poll[0] == n-1 && poll[1] == m-1){ return L; } for(int j=0;j<4;j++){ int xx = dx[j] + poll[0]; int yy = dy[j] + poll[1]; if(xx>=0 && yy>=0 && xx<n && yy<m && board[xx][yy] ==0){ board[xx][yy] = 1; queue.add(new int[]{xx,yy}); } } } L++; } return -1; } public static void main(String[] args){ Solution1 T = new Solution1(); int[][] arr={{0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 1, 0, 0, 0}, {1, 1, 0, 1, 0, 1, 1}, {1, 1, 0, 1, 0, 0, 0}, {1, 0, 0, 0, 1, 0, 0}, {1, 0, 1, 0, 0, 0, 0}}; int[][] arr3={{0, 0, 1, 1, 1, 1, 1}, {0, 0, 1, 0, 0, 0, 0}, {1, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 0}, {1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 1, 1, 0, 0}}; int[][] arr2={{1, 0, 0, 0, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 1, 0, 0, 0}, {1, 1, 0, 1, 1, 1, 1}, {1, 1, 0, 1, 0, 0, 0}, {1, 0, 0, 0, 1, 0, 0}, {1, 0, 1, 0, 1, 0, 0}}; System.out.println(T.solution(arr)); System.out.println(T.solution(arr2)); System.out.println(T.solution(arr3)); } }
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
initdb오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.그냥 상품등록 버튼 눌러서 상품을 추가할때는 정상적으로 재고수량이 나오는데 initdb로 만들어지는 샘플데이터의 재고수량(stockquantiy)의 데이터가 변경됩니다 ex(100->2)로그를 보면 item을 insert후에 자동으로 update -> 데이터가 변경.. 이유를 모르겠습니다. 프로젝트 첨부합니다 ㅜㅜhttps://drive.google.com/file/d/1p_rlIECRXz4hLxr-aB3EpVSYM-jw2TIc/view?usp=sharing
-
미해결스프링 부트 - 핵심 원리와 활용
application.properties를 프로젝트 내부에 두고 사용한다 하더라도, 여전히 이전 강의와 동일한 문제점이 있는 거 아닌가요?
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요!이전 강의(설정 데이터1 - 외부 파일)를 보면,application.properties를 외부에 두고 사용할 경우, 다음과 같은 문제점이 있다고 말씀하셨습니다."application.properties의 내용을 변경해야 하는 경우에 만약 10대의 서버를 운영 중이라면,10대의 서버에 있는 application.properties의 내용을 모두 일일이 변경해 주어야 하는 불편함이 있다." 그런데 이 문제점은 이번 강의처럼 application.properties를 프로젝트 내부에 두고 사용한다 하더라도,여전히 남아 있는 문제점 아닌가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원 목록 조회시 Whitelabel Error 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.회원 목록 클릭시 Whitelabel Error가 나오는데 정확한 이유를 모르겠습니다.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
16번 문제
안녕하세요! 포켓몬을 제일 많이 풀어준 트레이너는 누구일까요?select trainer_id, count(status)from basic.trainer_pokemonwhere status = "Released"group by trainer_idorder by count(status) desclimit 1 이렇게 select에서 count(status) 써도 되나요...?포켓몬을 많이 풀어줬다 --> status가 released 많이 했다 이렇게 받아들였어요
-
해결됨초보자를 위한 BigQuery(SQL) 입문
12번 문제
안녕하세요!단일(하나의 타입만 있는) 타입 포켓몬 중 많은 type1은 무엇일까요? select type1, count(type1)from basic.pokemonwhere type1 is not null and type2 is nullgroup by type1order by count(type1) desclimit 10 단일 타입만 있다고 하니까 type1 is not null 도 조건에 걸어야 하지 않나요?그냥 type2 is null 만 하면 type1도 null 이고 type2 도 null 인 값이 나올 수 있잖아요!count(id)가 null 값은 안 세서 괜찮은 건가요..?정확하게 하고 싶으면 where type1 is not null and type2 is null이렇게 표현해도 될까요?
-
해결됨실전! FastAPI 입문
main.py 리로드문제
WARNING: StatReload detected changes in 'main.py'. Reloading...에러표시와 함께 웹 리로드가 안되는거같아요 delete api 작성한것 또한 스웨거 에서 확인되지않는데 혹시 해당관련 정보 받을수있을까요
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
어플리케이션 실행 오류(@GeneratedValue 어노테이션 관련)
안녕하세요. 강의대로 실시간으로 따라 치면서 어플리케이션을 실행시켰는데 다음과 같은 오류가 발생했습니다. 그래서 코드를 아래와 같이 수정했는데 실행이 잘 되었습니다.어떤 이유에서 안된 것인지.. 영한님께서는 왜 성공하셨는지 궁금합니다.@GeneratedValue(strategy = GenerationType.IDENTITY)
-
미해결실전! Querydsl
gradle build 에러 발생 제발 도와주세요 ㅠㅠ
=========================저의 build.gradle 설정 ===========================plugins { id 'java' id 'org.springframework.boot' version '3.4.1' id 'io.spring.dependency-management' version '1.1.7' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(23) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' //test 롬복 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } =============================Hello Entity==============================package study.querydsl.entity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Hello { @Id @GeneratedValue private Long id; }Tasks -> build -> clean 정상적으로 작동합니다.Tasks -> build -> build 실행시 에러가 발생합니다.==========================에러 코드===================================오후 11:58:17: Executing 'build --scan'... > Task :compileJava > Task :processResources > Task :classes > Task :resolveMainClassName > Task :bootJar > Task :jar > Task :assemble > Task :compileTestJava > Task :processTestResources NO-SOURCE > Task :testClasses > Task :test FAILED 7 actionable tasks: 7 executed FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/USER/OneDrive/%EB%B0%94%ED%83%95%20%ED%99%94%EB%A9%B4/querydsl/querydsl/build/reports/tests/test/index.html BUILD FAILED in 16s Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Use defined at https://gradle.com/help/legal-terms-of-use. Do you accept these terms? [yes, no] The build scan was not published due to a configuration problem. The Gradle Terms of Use have not been agreed to. For more information, please see https://gradle.com/help/gradle-plugin-terms-of-use. Alternatively, if you are using Develocity, specify the server location. For more information, please see https://gradle.com/help/gradle-plugin-config. 오전 12:01:06: Execution finished 'build --scan'.해당 작업 파일 구글 드라이브 입니다. Onedrive 모드가 문제일수 있다해서 연결은 해제했습니다.https://drive.google.com/file/d/16tFQifUb64ZzBfhJkSc7RUHfLuFiJTjm/view?usp=drive_link 경로가 문제인가 싶어서 onedrive가 없는 C:\springtest 이렇게 파일 생성후 똑같이 해봤는데 clear 이상없고 build 실행하는데 에러코드는 안뜨지만 계속 Run 상태가 되어서 멈추니까 코드가 아래처럼 뜨네요..ㅠㅠ오전 12:47:10: Executing 'build --scan'... > Task :compileJava > Task :processResources > Task :classes > Task :resolveMainClassName > Task :bootJar > Task :jar > Task :assemble > Task :compileTestJava > Task :processTestResources NO-SOURCE > Task :testClasses OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2025-01-14T00:47:41.902+09:00 INFO 16840 --- [querydsl] [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2025-01-14T00:47:41.925+09:00 INFO 16840 --- [querydsl] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2025-01-14T00:47:41.929+09:00 INFO 16840 --- [querydsl] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. > Task :test > Task :check > Task :build BUILD SUCCESSFUL in 31s 7 actionable tasks: 7 executed Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Use defined at https://gradle.com/help/legal-terms-of-use. Do you accept these terms? [yes, no] The build scan was not published due to a configuration problem. The Gradle Terms of Use have not been agreed to. For more information, please see https://gradle.com/help/gradle-plugin-terms-of-use. Alternatively, if you are using Develocity, specify the server location. For more information, please see https://gradle.com/help/gradle-plugin-config. 오전 12:47:48: Execution finished 'build --scan'. 제발 도와주세요 ㅠㅠ 너무 힘듭니다...
-
미해결Airflow 마스터 클래스
docker desktop
안녕하세요 실습 진행 중 wsl을 이용해서 가상공간에서 작업을 진행하시는 것 같은데 도커데스크탑을 깔고 그 안에서 이미지들을 다운받는 식으로 작업을 하는 것과 차이가 있을까요?제가 알기로는 터미널에서 코드 쳐서 다운 받는 것과 도커데스크탑에서 이미지 찾아서 다운 받는 것과의 차이는 없는 걸로 알고 있어서요혹시 wsl로 작업을 하지않고 컴퓨터 두 대로 진행하려면 어떻게 해야될까요? 같은 네트워크에 있는 상태 입니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Could not find or load main class org.apache.kafka.connect.cli.ConnectDistributed 에러 해결
confluent-6.1.0\bin\windows\kafka-run-class.bat 파일 안에 rem Classpath addition for release으로 검색하셔서 밑에 코드를 넣으시면 됩니다. rem Classpath addition for LSB style path if exist %BASE_DIR%\share\java\kafka\* ( call :concat %BASE_DIR%\share\java\kafka\* )
-
미해결실전! GitHub Actions으로 CI/CD 시작하기
cloud9 이 종료되어서 진행하기가 힘듧니다.
지금 아무리해도 이제 더이상 하기가 힘듧니다.AWS가 처음이다 보니 EC2 만드는데 너무 많은 시간을 쏟고 있습니다.저는 github action 을 배우고 싶은 것이지 aws를 배울려고 하는게 아닙니다. 강의를 수정해주시던가, 아니면 어떻게 하면 될 것인지 명확한 절차를 알려주세요.
-
미해결김영한의 실전 자바 - 중급 2편
직접 구현하는 연결 리스트4 - 제네릭 도입 코드 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용] package collection.link; public class MyLinkedListV3<E> { private Node<E> first; private int size; public void add(E e){ Node<E> newNode = new Node<>(e); if (first == null){ first = newNode; } else { Node<E> lastNode = getLastNode(); lastNode.next = newNode; } size++; } //추가 코드 public void add(int index, E e){ Node<E> newNode = new Node<>(e); if (index == 0){ newNode.next = first; first = newNode; } else{ Node<E> prev = getNode(index - 1); newNode.next = prev.next; prev.next = newNode; } size++; } @Override public String toString() { return "MyLinkedListV1{" + "first=" + first + ", size=" + size + '}'; } private static class Node<E>{ E item; Node<E> next; public Node(E item) { this.item = item; } //A->B->C이런모양으로 출력하고 싶어! @Override public String toString() { StringBuilder stringBuilder = new StringBuilder(); Node<E> x = this; stringBuilder.append("["); while (x != null) { stringBuilder.append(x.item); if (x.next != null) { stringBuilder.append("->"); } x = x.next; } stringBuilder.append("]"); return stringBuilder.toString(); } } } 위 코드에서 Node는 정적 중첩 클래스로서 MyLinkedListV3에 선언돼 있습니다. static은 바깥 클래스와 독립적이고 클래스레벨에 소속돼 있어 인스턴스에 따라서 static class가 바뀌는 일은 없다고 알고 있었습니다. 그런데 여기서는 바깥 클래스의 타입 매개변수 E가 정적 중첩클래스인 Node에 영향을 주어 Node의 item의 타입을 E로 만듭니다. 그러면 E가 Integer인 MyLinkedListV3, E가 String인 MyLinkedListV3가 있을 수 있다는 것인데 타입 매개변수가 도입된 정적 중첩 클래스는 정적 변수와 다르게 인스턴스에 영향을 받을 가능성이 있다고 생각돼서 다음과 같이 실험해봤습니다.아래 코드를 실행한 결과package collection.link; public class MyLinkedListV3Main { public static void main(String[] args) { MyLinkedListV3<String> stringList = new MyLinkedListV3<>(); MyLinkedListV3<Integer> intList = new MyLinkedListV3<>(); stringList.add("a"); stringList.add("b"); stringList.add("c"); String string = stringList.get(0); System.out.println("string = " + string); System.out.println(stringList); intList.add(1); intList.add(2); intList.add(3); Integer integer = intList.get(0); System.out.println("integer = " + integer); System.out.println(intList + " = " + stringList); } } string = a MyLinkedListV1{first=[a->b->c], size=3} integer = 1 MyLinkedListV1{first=[1->2->3], size=3} = MyLinkedListV1{first=[a->b->c], size=3}이 부분을 유의 깊게 봐주세요 System.out.println(intList + " = " + stringList);위 코드를 실행하면 intList, strList를 동시에 출력해도 잘 출력이 되고 서로 독립적인 클래스가 타입만 다른 상태로 선언된 것처럼 보입니다.의문점이 또 있습니다.MyLinkedListV3<Integer> intList2 = new MyLinkedListV3<>(); //을 main에 추가하고 System.out.println(intList + " = " + stringList + intList2); //위와 같이 intList2도 출력하면 MyLinkedListV1{first=[1->2->3], size=3} = MyLinkedListV1{first=[a->b->c], size=3}MyLinkedListV1{first=null, size=0}위와 같이 타입 매개변수를 inList와 intList2가 같은 Integer인 상황임에도 링크드 리스트안의 요소들을 공유하진 않습니다. 같은 타입 매개변수를 사용하는 인스턴스들 끼리는 같은 정적 중첩 클래스를 공유하는 줄 알았는데 이것도 아닌 것 같습니다. 타입 매개변수가 적용된 정적 중첩 클래스는 정적 변수와 다르게 인스턴스마다 서로 다르게 존재하는지 여쭙고 싶습니다. 마지막 제네릭 타입 안에서 Node<E> node = new Node<>();는 되고 new E();는 안되는 이유를 생각해봤는데 맞게 생각한건지 봐주셨으면 좋겠습니다.E는 단순히 컴파일 되기 전 타입을 선언하여 해당 타입의 안정성을 보장하기 위해 E가 String으로 선언된 상황이면 String전용 Node로 만들기 위해 들어간거고 이 영향은 컴파일단계에서만 미치며 컴파일 이후에는 전부 상한의 클래스로 대체된다. 하지만 상한 클래스로 예를들어 Object라고 대체되어 어떤 메서드의 return 값이 Object로 변하는 경우라도 컴파일러가 알맞게 이전의 E타입으로 다운캐스팅 해주니 문제 없는 것이다.하지만 인스턴스 E를 "생성"하는 것은 문제가 된다. 단순히 타입을 선언하는게 아니고 인스턴스 E를 생성해서 뭔갈 한다면 예를 들어 상한이 Object이고 Object의 이름모를 하위타입의 인스턴스를 생성하면 해당 타입의 메서드, 멤버변수를 전부 활용할 수도 있다는 것인데, E가 정확히 무엇일지 몰라서 컴파일러가 상한 타입으로 퉁친 상태인데, 상한 타입보다 하위의 타입의 인스턴스 메서드를 쓸 가능성은 당연히 없애는 것이 맞기 때문에 new E();도 못쓰는 것이고 E인스턴스의 메서드, 멤버 변수 정보도 당연히 모르니까 instanceOf도 못 쓰는 것이다.라고 결론을 내렸는데 괜찮을까요?
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
호환성 관련 태그
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.)- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. <meta http-equiv="X-UA-Compatible" content="ie-edge">인터넷 익스플로러가 사라진 지금도 쓰이나요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
톰캣 Connection refused 에러 발생하는 분들
Section 8: 실습 환경을 위한 필수 SW여기 먼저 하고 하시면 잘 될겁니다.
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
톰캣 Connection refused 에러 발생하는 분들
Section 8: 실습 환경을 위한 필수 SW여기 먼저 하고 하시면 잘 될겁니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
eslint와 prettier
eslint를 설치하면 이전과 달리 esling.config.mjs로 파일이 설정되며 extend나 rules의 활용이 기존과 다른 방식으로 진행되며 충돌이 일어납니다. stackoverflow나 chatGPT의 도움을 받아 동작은 되지만, 이 부분 다시 설명해주셔야 하는게 아닌지요. (기존에 설명된 부분들도 코드나 적용방식이 달라져서, 플러그인을 활용하도록 합니다)이 부분을 스스로 혼자 찾아서 수정할 수 있는 역량이 있다면 이 강의를 듣지 않겠지요. 하루 종일 한단원도 나가지 못하고 .. 해결하려다 포기하게 되네요. 2년전에 산 강의를 시간이 없어 이제 듣는 제 문제도 있겠지만.. 이 부분 상세한 설명을 넣어주셔야 할것 같아요.
-
미해결
React-firebase authentication 관련 질문
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."); } };