묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
강의 9장 - 3 실습중에 오류를 못찾겠어요.
Error: Route.post() requires a callback function but got a [object Undefined] at Route.<computed> [as post] (C:\nodeSns\sns\node_modules\express\lib\router\route.js:216:15) at proto.<computed> [as post] (C:\nodeSns\sns\node_modules\express\lib\router\index.js:521:19) at Object.<anonymous> (C:\nodeSns\sns\routes\auth.js:13:8) at Module._compile (node:internal/modules/cjs/loader:1358:14) at Module._extensions..js (node:internal/modules/cjs/loader:1416:10) at Module.load (node:internal/modules/cjs/loader:1208:32) at Module._load (node:internal/modules/cjs/loader:1024:12) at Module.require (node:internal/modules/cjs/loader:1233:19) at require (node:internal/modules/helpers:179:18) at Object.<anonymous> (C:\nodeSns\sns\app.js:12:20) npm start 하면 자꾸 이 오류가 뜨는데 원인을 못 찾겠습니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
authorization 헤더와 jwt 저장 위치
내 게시물 모두 불러오기나 해시태그로 검색하기 등 api 서버에 요청 보낼 때 authorization 헤더에 jwt를 넣어서 보내도록 코딩 했는데 이를 확인할 수 있는 방법이 궁금합니다. 그리고 아래 화면에서 connect.sid로 전달된 세션 키와 연결된 세션에 해당 사용자의 jwt 값이 req.session.jwt로 들어있는 건가요?
-
미해결코드로 배우는 React with 스프링부트 API서버
완강 했어요 ^^
드디어 완강 하였네요.. 이 강의 난의도가 초급이라던데 어려운 부분도 많긴 했어요. 이제 중급 실력되는건가요? ^^;;; 스프링은 모든 내용이 이해가되긴한데 React 쪽이 어렵네요... 아마도 문법이 다양하고 오류 잡기도 어려워서 그렇겠죠? ㅎㅎㅎㅎ intelij 도 만기가 끝나가네요... visual studio code, intelij community학습 목적엔 위 2개로 개발 연습해도 되나요??다음으로 학습해야될 스프링 학습은 어떤걸 해야될까요? 잡 사이트 보니깐 코틀린 + 스프링은 쓰는 곳이 없네요... 인기가 없나... 진짜 매력적인 언어인데.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
에러 처리 방법
9강에서는 대체로 console.error(err); next(err);이런 식으로 에러를 처리했고 10강에서는 res.json으로 에러 코드, 메세지를 반환하고 있는데 이 둘의 차이가 뭔가요?에러 처리 미들웨어를 사용할 때와 json을 반환할 때를 어떻게 정할 수 있는지(?) 기준이 궁금합니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
PageResponseDto 를 제네릭 타입으로 만드는 이유가 뭔가요?
dto 만들떄 제네릭 타입으로 만드는 특별한 이유가 있나요?
-
미해결코드로 배우는 React with 스프링부트 API서버
서비스계층 만들기 11분 10초 PageRequestDTO 에 Builder 설정 왜 하는 거에요?
package org.zerock.apiserver.dto; import lombok.Builder; import lombok.experimental.SuperBuilder; @SuperBuilder public class PageRequestDTO { @Builder.Default private int page = 1; @Builder.Default private int size = 10; }
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
NodeBird 서비스의 화면 렌더링 방식에 대해 질문 드립니다!
궁금한 점이 있습니다.9강에서 만든 NodeBird 서비스의 구조는 프론트엔드가 따로 있는 것이 아니라 서버 측에서 nunjucks와 html 파일들을 사용하여 화면을 구성하는 것이 맞나요?1번이 맞고, 백엔드에서 직접 html을 생성하여 클라이언트에게 제공하는 구조라면 제가 공부한대로는 SSR 방식인 것 같은데 맞나요?프론트엔드를 따로 만들어서 서버와 연동하려면 app.js의 아래 코드와 views 폴더를 삭제하고 프론트 쪽에서 서버 측에서 만든 주소들을 호출하면 되나요?// app.js의 일부 app.set("view engine", "html"); nunjucks.configure("views", { express: app, watch: true, });
-
미해결코드로 배우는 React with 스프링부트 API서버
섹션 4 리액트와 API서버 통신 조회기능 구현 화면 차이 문의 건
안녕하세요. 질문이 있습니다.섹션 4 리액트와 API서버 통신에서 조회기능 구현을 실행하였습니다.강사님 화면과 달리 저의 화면은 아래와 같이 나옵니다.위 부분중 차이 나는 부분을 아래 다시 캡춰했습니다.현재 스프링 부트는 아래와 같이 실행되고 있습니다.조금 확대해서 다시 아래 다시 캡춰했습니다.강사님은 한 화면에서 두개가 나오는 거 같은데요.제가 어떤걸 수정해야 하는지 알고 싶습니다.위 섹션 4 리액트와 API서버 통신에서 조회기능 구현에서 최초 연결 확인하는 부분까지 코드는 강의에 나온데로 진행하였습니다.부탁드립니다. 감사합니다.
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
4.1 마지막 회원가입 실행되지만 빈화면 뜸
오류없이 실행은되는데 계속 이렇게 아무것도 결과가 안나옵니다.봐도봐도 모르겠어 프로젝트 파일 남겨봅니다.https://drive.google.com/file/d/1UngsyVj2InuB9bJWA6hpdcjhMBkXI9w3/view
-
미해결코드로 배우는 React with 스프링부트 API서버
AccessDeniedHandler가 작동하지않습니다
@Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { try { 생략... SecurityContextHolder.getContextHolderStrategy().getContext().setAuthentication(token); filterChain.doFilter(request, response); } catch (Exception e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); } }강의의 JWT와 @PreAuthorize 이용하기 파트 후반부에 강의처럼 USER권한만 가진 사용자로 ADMIN권한이 필요한 메소드에 접근하니 포스트맨에서 AccessDenied exception이 뜨지않고 catch (Exception e)가 예외를 잡아버려서 { "error": "ERROR_ACCESS_TOKEN" }결과가 이렇게 나옵니다 이미 AccessDenied 핸들러도 시큐리티에 등록 시킨후 입니다ADMIN권한을 가진 사용자 토큰으로 요청을 보내면 원하는 데이터도 잘 나옵니다 catch로 잡아서 예외를 던질까 시도해봤는데 이유는 모르겠지만 Exception에서만 예외가 잡힙니다ㅠ그래서 여러가지 해결책을 알아봤는데첫번째catch (RuntimeException e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); }이렇게 RuntimeException으로하면{ "error": "ERROR_ACCESSDENIED" }AccessDenied 핸들러가 잘 작동하구요 두번째SecurityContextHolder.getContextHolderStrategy().getContext().setAuthentication(token); } catch (Exception e) { log.info("---------------JWT ERROR!------------"); log.info(e); log.info(e.getMessage()); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(Map.of("error", "ERROR_ACCESS_TOKEN")); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println(jsonStr); writer.close(); } filterChain.doFilter(request, response);doFilter를 try catch 밖에 두어도 AccessDenied 핸들러가 잘 작동합니다세번째@ExceptionHandler(AccessDeniedException.class) public ResponseEntity<?> notAuthorized(AccessDeniedException e) { return ResponseEntity.status(HttpStatus.FORBIDDEN).body(e.getMessage()); }RestControllerAdvice로 하면 핸들러가 작동안하긴해도 예외처리가 가능했습니다근데 문제는 왜 원래코드에서 영상처럼 작동을 안하는지 이유를 모르겠습니다 제가 빠트린부분이 있을까요?스프링부트 버전도 똑같이 맞춰보기도 했습니다
-
해결됨코드로 배우는 React with 스프링부트 API서버
로그인 성공과 실패 처리 강의중 에러 발생하여 문의드립니다.
안녕하세요.user(1~9)@aaa.com 계정 생성 후 postman 으로 /api/member/login 호출하여 로그인 성공 후, ApiLoginSuccessHandler 으로 빠지는 부분을 확인 하려는 참입니다. 그런데 postman 으로 호출시 loadUserByUsername 에서 return 이후 successHandler 가는 도중 실패가 뜹니다. Failed to process authentication requestorg.springframework.security.authentication.BadCredentialsException: 자격 증명에 실패하였습니다. DB에 있는 패스워드와 1111을 매칭해봐도 true 로 반환됩니다. 어떤부분이 문제 일까요...?
-
미해결코드로 배우는 React with 스프링부트 API서버
엔티티 클래스 만들기 챕터에서 테이블 왜 두개 만들어진 건가요?
엔티티 클래스 만들기 챕터에서 테이블 왜 두개 만들어진 건가요? 엔티티 클래스 만들기 챕터 8분 36초에서 테이블이 왜 두개 만들어 졌나요?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
팔로잉과 팔로워 관계
deserializeUser에서 req.user에 넣을 팔로잉이랑 팔로워 찾으실 때, as는 모델 관계의 as를 따라간다고 하셨는데 왜 위 코드에서 Follwers가 //팔로잉이고 Followings가 //팔로워라고 하신 건지 모르겠습니다ㅜ 예를 들어, 저의 팔로잉을 찾으려면 제 아이디를 팔로워 아이디에서 찾아야 하니까 기준 아이디가 followerId가 되는 Followings가 맞는거 아닌가요?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
connect.sid를 쿠키에 넣는 시점과 express-session
req.login를 통해 req.session에 { 랜덤값: 유저아이디}를 저장하는 건 알겟는데, connect.sid=랜덤값을 쿠키에 넣는 시점은 언제인가요?그리고 서버가 connect.sid를 세션 쿠키로 전송할 때, express-session 은 자동으로 이 값을 secret으로 서명하여 전송하나요?
-
미해결코드로 배우는 React with 스프링부트 API서버
세션 10번 완성 소스가 잘못올라온거 같아요
세션 10번 강의 보면서 따라가고 있는데 org.springframework.dao.DataIntegrityViolationException: could not execute statement [(conn=335) Cannot add or update a child row: a foreign key constraint fails (`apidb`.`tbl_cart_item`, CONSTRAINT FKs7vg62w3nq7igdxgssq1u0biw FOREIGN KEY (`product_pno`) REFERENCES tbl_product (`pno`))] [insert into tbl_cart_item (cart_cno,product_pno,qty) values (?,?,?) returning cino]; SQL [insert into tbl_cart_item (cart_cno,product_pno,qty) values (?,?,?) returning cino]; constraint [null] 에러가 나오더라구요..그래서 제가 세션 10 완성 소스 보면서 잘못된 곳을 찾아 보려는데 ... 올라건 소스가 잘못된거 같아요... 세션 10의 소스가 아닙니다.
-
미해결코드로 배우는 React with 스프링부트 API서버
LocalDateFormatter에 대해서 궁금한 점이 있습니다.
public ResponseEntity searchLinkOrderNumberOutput( @ApiParam("주문 번호") @RequestParam(required = false) List<String> orderNumbers, @ApiParam(name = "startDate", value = "yyyyMMdd", required = true) @RequestParam String startDate, @ApiParam(name = "endDate", value = "yyyyMMdd", required = true) @RequestParam String endDate, @ApiParam(name ="confirmationStatus", value="확정여부(Y/N)") @RequestParam String confirmationStatus, @ApiParam(name = "pageSize", value = "한 페이지에 보여줄 주문 개수 (미 입력시 기본값 20)") @RequestParam(defaultValue = "20") int pageSize, @ApiParam(name = "pageNumber", value = "데이터를 조회 할 페이지 숫자 (미 입력시 기본값 1)") @RequestParam(defaultValue = "1") int pageNumber) {궁금한 점이 있습니다 선생님 만일 controller에서 string으로 날짜값을 받으면 이제 별도의 파싱작업을 거쳐서 LocalDateTime 형식으로 변환해 줘야하는데 LocalDateFormatter을 사용하면 해당 작업을 생략할 수 있는건가요???
-
미해결코드로 배우는 React with 스프링부트 API서버
ProductSearchImpl 관련 질문드립니다.
@Override public PageResponseDTO<ProductDTO> searchList(PageRequestDTO pageRequestDTO) { log.info("----------------------searchList-------------------------"); Pageable pageable = PageRequest.of( pageRequestDTO.getPage() -1, pageRequestDTO.getSize(), Sort.by("pno").descending()); QProduct product = QProduct.product; QProductImage productImage = QProductImage.productImage; // from 절 JPQLQuery<Product> query = from(product); // join // @ElementCollection을 join 할때는 아래와 같이 사용해야합니다. // product.imageList를 productImage로 사용하겠다. query.leftJoin(product.imageList, productImage); query.where(productImage.ord.eq(0)); Objects.requireNonNull(getQuerydsl()).applyPagination(pageable,query); List<Tuple> productList = query.select(product,productImage).fetch(); // 쿼리를 실행시키기 위함. long count = query.fetchCount(); log.info("======================="); log.info(productList); return null; }이 코드에서 return 값을 넘기고 싶어서 수정하는데 어떻게 해야 값이 넘어가는지를 잘 모르겠습니다...TodoSearchImpl에서는 new PageImpl<>() 사용하셔서 넘기셨는데 여기서는 어떻게 처리해야 될까요??2. ProductServiceImpl의 getList() 메서드와 동일한 역할인거같은데, ProductSearchImpl 에서는 querydsl을 사용하셔서 보여주신거고 ProductServiceImpl에서는 jpa를 사용하는 방법을 보여주신게 맞는지 궁금합니다!
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
express.static의 요청 처리
app.use('/', express.static(path.join(__dirname, 'public')));다른 코드들에서는 이런 식으로 경로를 지정하면 경로와 똑같은 요청만 처리를 하거나 모든 요청에 대해 처리하고 싶으면 그냥 경로를 생략하였는데 express.static은 왜 localhost:3000/ 에 대한 요청만 받아들이는 것이 아니라, 모든 요청에 대해 해당 파일이 있는지 확인하게 되는지 궁금합니다. 예시)localhost:3000/about -> public 폴더 안에 about 파일이 있는지 찾음 localhost:3000/hello.css-> public 폴더 안에 hello.css 파일이 있는지 찾음express.static은 특별한 미들웨어 인가요?
-
미해결[초급] 찍어먹자! 코틀린과 Spring Security + JWT로 회원가입 만들기
4.1강 마지막 회원가입 실행
모든 코드를 다 작성하고 db실행도 다 한 상태로 send룰 눌렀는데 이렇게 빈 실행화면이 뜨고 디비에 회원정보가 생기지 않습니다. 오탈자가 있나 살펴보았지만 도저히 찾지 못하였습니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
`app.use`의 용도에 대해 질문 드립니다!
궁금한 점이 있습니다. 지금까지는 다음과 같이 app.use 안에 요청 처리를 위한 미들웨어를 작성했는데, app.use((req, res, next) => { console.log("모든 요청에 실행하고 싶어요"); next(); });다음과 같이 app.use에 다운받은 미들웨어를 장착하는 건 "이 파일에서 특정 미들웨어를 사용하겠다"는 의도로 사용하는 건가요?? 아니면 둘 다 같은 동작을 하는건데 제가 둘을 다르다고 생각하는 걸까요?app.use(morgan("dev")); app.use(cookieParser()); app.use(express.json()); app.use(express.urlencoded({ extended: true }));추가로, 위 미들웨어들로 인해 req이나 res 객체에서 편하게 .cookie나 .body를 사용할 수 있게 되는데 그럼 미들웨어 내에서 미들웨어를 사용하는 건가요 🤔🤔?
주간 인기글
순위 정보를
불러오고 있어요