묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결습관부터 바꿔주는 Node.js & Express 기초
swagger No operations defined in spec
/swagger.json은 잘 뜨는데/api-docs로 들어가면 'swagger No operations defined in spec!' 이라고 계속 못불러오네요..!수업때 코드 잘 따라친것 같은데, 깃헙에 코드올려주시면 감사하겠습니다..!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
쿠키파서 기능
쿠키파서가 없어도 쿠키가 보내지고 데이터를 받을 때 원본이 오는데 쿠키파서 미들웨어가 필수인건가요?
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
빌드하지 않고 테스트가 가능한가요?
'Read(1): 게시글 불러오기' 부분 수강중에 있습니다.강사님께서는 프론트부분 코드를 수정하시고도 npm run build 명령어 입력 없이 즉, 빌드 없이 바로 브라우저에서 테스트가 가능하신 것 같은데 어떻게 하신 건가요?저 같은 경우는 구름 ide라는 클라우드 서비스로 visual studio code를 이용중이며3000번 포트에서는 react를, 5000번 포트에서는 node를 사용중에 있습니다. 그래서 코드 한번 수정 후 테스트 해볼 때터미널에서 client폴더로 이동 -> npm run builid -> server폴더로 이동 -> nodemon index.js이후에 브라우저 들어가서 코드 바꾼 것 잘 적용 되었는지 확인중에 있습니다. 그런데 리액트 코드가 길어지면 길어질수록 빌드하는데 시간이 너무 오래 걸리네요 ㅠㅠ 강사님처럼 빌드하지 않고 바로 확인할 수 있는 방법이 있는지 궁금합니다.추가로 판다코딩님 깃헙 링크좀 부탁드립니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
index.js 오류
post/user/등 강좌 되돌려 보면서 틀린 곳이 있나 확인했는데,어디서 부터 고쳐야 될지 모르겠습니다. index.jsimport React from 'react'; import { useSelector } from 'react-redux'; import PostForm from '../components/PostForm'; import PostCard from '../components/PostCard'; import AppLayout from '../components/AppLayout' const Home = () => { const { isLoggedIn } = useSelector((state) => state.user); const { mainPosts } = useSelector((state) => state.post); return ( <AppLayout> {isLoggedIn && <PostForm/>} {mainPosts.map((post)=><PostCard key={post.id} post={post}/>)} </AppLayout> ); } export default Home;
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
8:24분경 코드 오류나서 수정하셨는데!
8분 20초경 오류나서 코드를 수정하셨는데,case ADD_POST_TO_ME: return { ...state, me: { ...state.me, // 이부분 왜 추가한건가요? Posts: [{ id: action.data }, ...state.me.Posts], }, };코드 주석부분 왜 추가하신건가요..?const dummyUser = (data) => ({ ...data, nickname: "wewewe", id: 1, Posts: [{ id: 1 }], Followings: [{ nickname: "we1" }, { nickname: "we2" }, { nickname: "we3" }], Followers: [{ nickname: "we1" }, { nickname: "we2" }, { nickname: "we3" }], });dummy데이터 구조를 보면Posts를 제외한 nickname, id, Followings 등 변하지 않는 데이터들의 불변성을 유지하기 위해서 추가한것이 맞는건가요?!
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
error:03000086:digital envelope routines::initialization error axios오류
안녕하세요 axios 코드 실행 하면 아래 사진과 같이 오류가 뜹니다.
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
ADD_COMMENT_SUCCESS 새로운 post에서만 작동 안 하는 문제
안녕하세요 제로초 님,redux saga immer, faker 까지만 들었구요, 백엔드는 안 만들었고요.faker가 문제가 있다길래,import { faker } from '@faker-js/faker';이거를 대신해서 설치해서 했는데, 이거의 문제는 아닌거 같고요. ADD_COMMENT_SUCCESS가기존의 post에서는 작동을 하는데, 새로운 post에서만 작동 안 하는 문제가 있습니다. 새로운 post.id가 동작을 안 하나 싶어const post = draft.mainPosts.find((post)=> { console.log(post.id == action.data.postId); return post.id == action.data.postId; });를 해봤는데 역시 true가 나옵니다.아래는 브라우저 결과 사진들 입니다.로그인 안 했을 때,로그인 하고 기존의 post에 comment를 달았을 때 -> 정상적으로 동작 함. 로그인 하고 새로운 post을 하나 추가 -> 정상적으로 동작 함. username이 바뀌는 건 faker를 썼고, userId만 그래도 컴포넌트에서 받아서 써서 지금 ADD_POST_TO_ME 동작해서 1에서 2로 바뀌었구요.그러나새로운 post에 comment를 달았을 때 -> 콘솔로그가 true가 나옴에도 동작을 하지 않음. 기존의 post에도 comment가 안 달리는 거면 제가 실수를 한게 분명한데, 새로운 post에만 동작을 안 하는게 이상합니다.ADD_COMMENT_REQUEST를 보냈을 때에도, 갑자기 mainPosts가 초기화 되거나 그런 것도 아니었습니다. 만약 그랬다면 콘솔로그가 false가 나왔어야 합니다. 감사합니다!
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
populate 문제(cats schema 오류) 해결법
강의대로 따라 했으나, 아래와같은 오류 나는경우 해결법 입니다.ERROR [ExceptionsHandler] Schema hasn't been registered for model "comments".Use mongoose.model(name, schema)다른 문의글 보면 답변으로 버전 문제라고 버전을 내리라고 하시는데 , 좀 이상한 답변이라는 생각에진짜 몇시간동안 헤매다가 해결했습니다. 현재기준 최신버전"@nestjs/common": "^9.0.0", "@nestjs/mongoose": "^9.2.1", "mongoose": "^6.9.0",에서 아래와 같이 해결 했습니다. 주석참조.export class CatsRepository { constructor( @InjectModel(Cat.name) private readonly catModel: Model<Cat>, // 해당 라인 추가, 참고로 강의에선 Comments 인데 저는 Cat과 같이 단수형으로 만들어서 Comment 입니다. @InjectModel(Comment.name) private readonly commentModel: Model<Comment>, ) {} async findAll() { const result = await this.catModel .find() // populate 파라미터 변경 .populate({ path: 'comments', model: this.commentModel }); return result; } ... }다른 누군가에게 도움이 되기를
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
VsCode : Import하지 않은 컴포넌트 경고표시X(설정?)
현재 버전 정보들입니다 "next": "^11.1.4", "prop-types": "^15.8.1", "eslint": "^8.33.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0"TypeScript와 React를 사용해서 프로젝트 했을 때는 VsCode에서(웹스톰만의 기능은 아니라고 생각합니다.) import하지 않은 컴포넌트에 대한 경고문이 나와서, 맥북 기준 커맨드+.을 하면 Code Action으로 import을 시켜줄 수 있었습니다.그런데강의를 진행하면서 컴포넌트를 import하지 않은 상황인데도 불구하고, 따로 경고문이 나타나지 않는데, 이게 어떤 설정을 해야하는건지 잘 모르겠습니다.<Menu /> , <Col /> , <UserProfile /> 같은 컴포넌트들입니다.(코드는 이 정도만 첨부하겠습니다.)import PropTypes from "prop-types"; import Link from "next/link"; import { Menu, Input, Row, Col } from "antd"; ... <Row gutter={8}> <Col xs={24} md={6}> {isLoggedIn ? <UserProfile /> : <LoginForm />} </Col> <Col xs={24} md={12}> {children} </Col> <Col xs={24} md={6}> <a href="https://velog.io/" target="_blank" rel="noreferrer noopener">Velog</a> </Col> </Row> </div> ); }; AppLayout.propTypes = { children: PropTypes.node.isRequired, }; export default AppLayout;Import되지 않은 컴포넌트인 <UserProfile />, <LoginForm /> 경고문이 뜨지 않는 사진도 첨부했습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
Delete 'CR' eslint 표시 없애기 공유(windows사용자)
windows에서 vscode에서 typescript를 사용하시다 보면아래와 같이 delete 'cr'이라고 계속 빨간 글씨가 떠서눈에 거슬리는 경우가 있습니다.해결책 : eslintrc.js파일에 가셔서 아래와 같이rules에 추가한 후 저장해 주시면 됩니다.긁어서 eslintrc.js파일의 하단의 rules에 추가해 주세요 'prettier/prettier': [ 'error', { endOfLine: 'auto', }, ],
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
메인페이지 출력 오류
안녕하세요 메인 페이지 출력이 안되어서 질문 남깁니다해당 코드와 실행결과 사진으로 첨부했습니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
조언 부탁드립니다. mini-project
현재 puppeteer-crawling해서스타벅스메뉴와 이미지는 잘 긁어 왔는데요.자꾸 MongoDB에 저장되어 있는 img를 불러올 때 에러가 발생하는데, 성공하신 분 있나요?스키마에서 이미지 형식을 Buffer했습니다.import mongoose from "mongoose"; const StarbucksSchema = new mongoose.Schema({ name: String, img: Buffer, }); export const Starbucks = mongoose.model("Starbucks", StarbucksSchema); //이미지 URL로부터 이미지 다운로드 if (!fs.existsSync("img_crawling")) { fs.mkdirSync("img_crawling"); } let fileName = `img_crawling/${menuName}.jpg`; request(menuImage).pipe(fs.createWriteStream(fileName)); console.log(`이미지 ${fileName} 저장 완료`); 저는 fs모듈과 request모듈을 추가로 사용했는데,이미지의 주소를 MongDB에 저장하고,이미지는 별도의 폴더에 저장되게 만들었습니다.질문 요약1. MongDB에 이미지 저장할 때 fs라이브러리와 request라이브러리를 사용하게 맞나요?2. 이미지를 저장은 잘 됐는데, 화면에 뿌려 줄려고 하는데 자꾸 에러가 나요.3.몽고DB에 접속해서 이미지 주소를 가져와서, 그 주소를 기반으로 뿌려줘야 되는지4.아니면 몽고DB에 접속해서 그 메타주소(?)를 기반으로 현재 컴퓨터에 저장된 이미지를 화면에 뿌려줘야 하는지자꾸 구글링하면 몽고DB에 이미지파일을 직접적으로저장하는 것은 DB에 무리를 일으킨다. 그래서 어떠한라이브러리를 사용해서 DB에는 메타주소(?)만을 저장하고,이미지파일을 별도의 localStorage에 저장한다.또한 이미지를 그냥 가져(load) 올 수 없어서 인코딩을 해줘야 한다. 뭔 말인지 모르겠어요 ㅠ.ㅠ
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
AbortSignal 오류 해결 방법 공유드립니다.
해당 오류 발생 시 컨트롤 + 파란색 부분 클릭하셔서 편집기 이동합니다. 압축 풀고 실행시키면 abort 구문과 timeout 구문이 누락되었습니다. 형식에 맞게 작성해주시면 됩니다.이후 정상 동작하였습니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
setProducts 질문
위 사진처럼 setProducts 밑에 console.log를 해봤는데한번 출력될 줄 알았는데 왜 두 번 출력되는 건가요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
제너레이터 함수 안 yield 구문 실행에대해 질문드립니다..
function* test() { yield 1; yield 2;}===============const gen = test()===============gen.next(){ "value": 1, "done": false}보통 제너레이터 함수를 설명할때, 개발자 도구에서 이런식으로 설명을 많이 하는것같은데...설명만 보면 yield 구문실행을 위해선, next() 라는 함수를 사용해야된다는건 알겠습니다..근데 실제코드에서는 next() 함수를 실행하지않는데, 어떻게 yield 구문들이 실행되는지 이해가 안됩니다..
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
Wsl mysql 질문
오늘 하루 mysql 설정하는거때문에 다 날려먹으면서 혼자서 해보고있는데 우여곡절 끝에 WSL에 mysql까지 실행 성공시켜서 그안에 react-nodebird database가 있는건 확인했는데 윈도우에 깐 mysql-workbench랑 연동을 못하고있는데 크게 상관 없을까요 제로초쌤..?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
혹시 테스트 결제 잘 되나요??
여러 방면으로 시도 중인데,error_code: "NOT_READY"error_msg: "등록된 사용자가 아니거나, 아임포트 관리자 페이지에 설정된 PG정보가 없습니다."해당 에러가 뜨면서 계속 실패하네요;;혹시 하신 분들은 어떻게 성공하셨는지 궁금합니다.일단 제가 예상한 것으로는 강의 화면이랑 제 구 관리자콘솔의 시스템 관리 탭이 다른 점에 눈이 가는데, 이걸 어떻게 처리해야되는지 어디를 찾아봐도 안나오네요...강의에서는 여러 탭이 있는데 저는 두 개의 탭 밖에 보이지 않습니다. 해결 방법을 찾고 싶어도 어디서 찾아야 되는 지 감이 안잡히네요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
포스트맨 실습 진행 시 undefined 오류
같은 코드를 이용해 포스트맨 호출 시, 다음 에러가 발생합니다.TypeError: Cannot read property 'moneyService' of undefined at buyProduct (file:///home/xxx/%EB%B0%94%ED%83%95%ED%99%94%EB%A9%B4/codecamp-backend-online/class/12/12-01-express-with-DI-IoC/mvc/controllers/product.controller.js:11:31) at Layer.handle [as handle_request] (/home/xxx/바탕화면/codecamp-backend-online/node_modules/express/router/layer.js:95:5) at next (/home/xxx/바탕화면/codecamp-backend-online/node_modules/express/lib/router/route.js:144:13) at Route.dispatch (/home/xxx/바탕화면/codecamp-backend-online/node_modules/express/lib/router/route.j4:3) at Layer.handle [as handle_request] (/home/xxx/바탕화면/codecamp-backend-online/node_modules/express/router/layer.js:95:5) at /home/xxx/바탕화면/codecamp-backend-online/node_modules/express/lib/router/index.js:284:15 at Function.process_params (/home/xxx/바탕화면/codecamp-backend-online/node_modules/express/lib/routedex.js:346:12) at next (/home/xxx/바탕화면/codecamp-backend-online/node_modules/express/lib/router/index.js:280:10) at jsonParser (/home/xxx/바탕화면/codecamp-backend-online/node_modules/body-parser/lib/types/json.js:7) at Layer.handle [as handle_request] (/home/xxx/바탕화면/codecamp-backend-online/node_modules/express/router/layer.js:95:5)이 때, app.post 미들웨어 함수 부분에 bind()로 엮어주어야만 정상 작동하는데 이유가 무엇일까요?코드는 아래 첨부합니다.import express from "express"; import {ProductController} from "./mvc/controllers/product.controller.js"; import {CouponController} from "./mvc/controllers/coupon.controller.js"; import {CashService} from "./mvc/controllers/services/cash.service.js"; import {ProductService} from "./mvc/controllers/services/product.service.js"; import {PointService} from "./mvc/controllers/services/point.service.js"; const app = express(); app.use(express.json()); const cashService = new CashService(); const productService = new ProductService(); const pointService = new PointService(); // 상품 API const productController = new ProductController(cashService, productService); app.post("/products/buy", productController.buyProduct) app.post("/products/refund", productController.refundProduct) // 쿠폰 구매하기 const couponController = new CouponController(pointService); app.post("/coupons/buy", couponController.buyCoupon); app.listen(3000, () => { console.log("3000번 포트에서 연결 중..."); })index.jsexport class ProductController { constructor(moneyService, productService) { // DI (IoC) this.moneyService = moneyService; this.productService = productService; } buyProduct(req, res){ // 지불 금액 검증 const hasMoney = this.moneyService.checkValue(); // 재고 검증 (재고 있으면 구매) const isSoldOut = this.productService.checkSoldOut(); // 상품 구매 코드 if (hasMoney && !isSoldOut) { res.send("상품 구매 완료"); } } refundProduct(req, res){ // 재고 검증 (재고 없으면 환불) (구매 코드와 중복) const isSoldOut = this.productService.checkSoldOut(); // 환불 코드 if (isSoldOut) res.send("환불 완료"); } }ProuductControllerexport class CouponController{ constructor(moneyService) { this.moneyService = moneyService; } buyCoupon(req, res){ const hasMoney = this.moneyService.checkValue(); // 쿠폰 구매 코드 if (hasMoney){ res.send("쿠폰 구매 완료"); } } }CouponControllerexport class ProductService{ checkSoldOut(){ console.log("판매 완료 검증."); // 재고 검증 } }ProductServiceexport class PointService{ checkValue(){ console.log("포인트 검증."); // 지불 금액 검증 } }PointServiceexport class CashService{ checkValue(){ console.log("현금 검증.") // 지불 금액 검증 } }CashService
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
제로초스쿨 커뮤니티 슬랙에 들어갈수없습니다....!
안녕하세요, 제로초 스쿨 커뮤니티 에 들어갈 수 없는데..... 이제 슬랙을 운영하시지 않으시는건가요 ??
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
Connection 부분 질문
따라하고있는데 Connection부분이 저렇게 줄이 찍 가져있고 사용되지않음으로 표시된다고 뜹니다. import부분도 그렇구요. 무엇때문에 이럴까요?