172만명의 커뮤니티!! 함께 토론해봐요.
미해결
[리뉴얼] React로 NodeBird SNS 만들기
로그인시 401 Unauthorized 오류가 떠서 리덕스 액션을 봤더니 LOG_IN_FAILURE에 error 내용이 비어 있었습니다. routes/user.js const express = require("express"); const bcrypt = require("bcrypt"); const { User, Post } = require("../models"); const passport = require("passport"); const router = express.Router(); router.post("/login", (req, res, next) => { console.log("🧾 req.body:", req.body); passport.authenticate("local", (err, user, info) => { if (err) { console.error(err); return next(err); } if (info) { return res.status(401).send(info.reason); } return req.login(user, async (loginerr) => { if (loginerr) { console.error(loginerr); return next(loginerr); } const fullUserWithoutPassword = await User.findOne({ where: { id: user.id }, attributes: { exclude: ["password"], }, include: [ { model: Post, }, { model: User, as: "Followings", }, { model: User, as: "Followers", }, ], }); return res.status(200).json(fullUserWithoutPassword); }); })(req, res, next); }); router.post("/", async (req, res, next) => { try { const exUser = await User.findOne({ where: { email: req.body.email, }, }); if (exUser) { return res.status(403).send("이미 사용중인 아이디입니다."); } const hashedPassword = await bcrypt.hash(req.body.password, 12); await User.create({ email: req.body.email, nickname: req.body.nickname, password: hashedPassword, }); res.status(201).send("ok"); } catch (error) { console.error(error); next(error); } }); module.exports = router; 세션 쿠키가 잘 전달이 안된건가 싶어서 req.body를 서버 터미널로 찍었더니 req.body: undefined 로 나왔습니다. 로그인 폼에서 데이터를 잘못 넘겨준건가 해서 확인해봤더니 loginForm.js const onSubmitForm = useCallback(() => { console.log(email, password); dispatch(loginRequestAction({ email, password })); }, [email, password]); 데이터도 잘 넘겨준 것 같고 sagas/user.js function logInAPI(data) { return axios.post("/user/login", data); } function* logIn(action) { try { const result = yield call(logInAPI, action.data); yield put({ type: LOG_IN_SUCCESS, data: result.data, }); } catch (err) { console.error(err); yield put({ type: LOG_IN_FAILURE, error: err.response.data, }); } } 사가쪽도 문제가 없어보여서 프론트 쪽 문제는 아닌 것 같고 백엔드쪽 문제 같은데 도저히 어디서 문제가 생긴건지 모르겠습니다. app.js const express = require("express"); const cors = require("cors"); const session = require("express-session"); const cookieParser = require("cookie-parser"); const postRouter = require("./routes/post"); const userRouter = require("./routes/user"); const db = require("./models"); const passportConfig = require("./passport"); const passport = require("passport"); const dotenv = require("dotenv"); dotenv.config(); const app = express(); db.sequelize .sync() .then(() => { console.log("db 연결성공"); }) .catch(console.error); passportConfig(); app.use( cors({ origin: "*", credentials: false, }) ); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cookieParser(process.env.COOKIE_SECRET)); app.use( session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, }) ); app.use(passport.initialize()); app.use(passport.session()); app.get("/", (req, res) => { res.send("hello express"); }); app.get("/api", (req, res) => { res.json([ { id: 1, content: "hello", }, { id: 2, content: "hello2", }, { id: 3, content: "hello3", }, ]); }); app.get("/api/posts", (req, res) => { res.json([ { id: 1, content: "hello", }, { id: 2, content: "hello2", }, { id: 3, content: "hello3", }, ]); }); app.use("/post", postRouter); app.use("/user", userRouter); app.listen(3065, () => { console.log("서버 실행 중!"); }); passport/local.js const passport = require("passport"); const { Strategy: LocalStrategy } = require("passport-local"); const { User } = require("../models"); const bcrypt = require("bcrypt"); module.exports = () => { passport.use( new LocalStrategy( { usernameField: "email", passwordField: "password", }, async (email, password, done) => { try { console.log("입력값:", email, password); const user = await User.findOne({ where: { email }, }); console.log("찾은 유저:", user && user.email); if (!user) { return done(null, false, { reason: "존재하지 않는 이메일입니다!" }); } const result = await bcrypt.compare(password, user.password); if (result) { return done(null, user); } return done(null, false, { reason: "비밀번호가 틀렸습니다." }); } catch (error) { console.log(error); return done(error); } } ) ); }; passport/index.js const passport = require("passport"); const local = require("./local"); const { User } = require("../models"); module.exports = () => { passport.serializeUser((user, done) => { done(null, user.id); }); passport.deserializeUser(async (id, done) => { try { const user = await User.findOne({ where: { id } }); done(null, user); } catch (error) { console.error(error); done(error); } }); local(); }; 백엔드 코드를 첨부하였습니다. 터미널에 나온 콘솔 내용입니다. local.js파일에서도 콘솔("입력값:","찾은 유저:" )을 찍었는데 터미널에 찍힌 콘솔은 req.body만 찍혔습니다..
react redux node.js express next.js
현석
2025-12-29T09:30:35.438Z
댓글 1
좋아요 0
조회수 120
미해결
프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
D드라이브가 용량이 더 커서 파이썬이나 VScode를 D드라이브에 설치하려고 하는데 상관없나요?
the1200
2025-12-29T09:27:06.746Z
댓글 1
좋아요 0
조회수 101
미해결
애플 웹사이트 인터랙션 클론!
- 질문에 대한 답변은 강의자가 하는 경우도 있고, 수강생 여러분들이 해주시는 경우도 있습니다. 같이 도와가며 공부해요! :) - 작성하신 소스코드 자체의 오류보다는, 개념이나 원리가 이해되지 않는 부분을 질문해주시는게 좋습니다. 그대로 따라했는데 소스코드에서 버그가 나는 경우는 99%가 오타에 의한거라서, 완성된 소스랑 찬찬히 비교해보시면 직접 찾으실 수 있을 거예요. 개발자도구 console에 오류로 표시된 부분만 완성 코드에서 복사->붙여넣기를 해보시는 것도 방법입니다. - 먼저 유사한 질문이 있었는지 검색해보세요. 안녕하세요. 제가 스스로 영상을 찍어서 해보려고 하니 웹페이지 배경이 하얀색이라 영상 찍을때도 하얀색 바탕으로 하면 좋을거 같다고 생각이 들었는데요. 샘플 예제 동영상도 혹시 하얀색 배경에서 영상 촬영을 하신건지 아니면 프레임 추출해서 이미지를 배경제거를 해서 한건지 궁금해서요! 그리고 또 하나 요즘 애플에서는 스크롤이 아니라 부분적으로 영상처럼 작동하던데 그 기술도 인터랙티브 기술일까요? (아직 완강은 못해서 질문한 것일수도 있습니다)
HTML/CSS javascript 웹-디자인 svg 인터랙티브-웹 클론코딩
nhs0912
2025-12-29T06:12:16.166Z
댓글 1
좋아요 0
조회수 95
미해결
비개발자도 쉽게 시작하는 코딩 입문 강의: PCCE 합격을 위한 파이썬 기초 & 알고리즘
안녕하세요. 실습환경을 제하고 전 강의 수강을 했는데 수료증 발급 가능한지 문의 드립니다. 실습환경은 회사 노트북으로 오픈이 되지 않아 실습이 불가한 상황입니다. 확인 부탁드립니다. 감사합니다.
janus014
2025-12-29T06:05:04.595Z
댓글 1
좋아요 0
조회수 86
해결됨
챗GPT와 파이썬으로 주식 자동매매 앱 및 웹 투자 리포트 만들기
파이선까지는 잘 됐습니다. vs code 설치 후 아래와 같이 강의 내용과 달라서 진도가 안 나가고 있습니다. 왼쪽의 트리구조, ctrn+shift+r 버튼 눌러도 화면처럼 뜨지 않으며 select inter>> 로 뜨지 않으며 그냥 > 만 보이고 python (kiwoom_32)도 보이질 않네요. 설치를 기본이 아닌 다른 폴더에 하기는 했습니다. (d:\inforun에 설치 함)
python 재테크 streamlit chatgpt 프롬프트엔지니어링
xatron
2025-12-29T02:40:54.147Z
댓글 3
좋아요 0
조회수 128
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
map 함수 안에서 자식 컴포넌트가 순회하는 코드가 있다고 할 때, 그 자식 컴포넌트 안에서 훅(ex useEditPost/useDeletePost)을 호출하는 것이 좋을까요? 아니면 부모에서 훅을 한번 호출한 뒤 자식 컴포넌트에 prop으로 내려주는 것이 좋을까요? 전자는 자식마다 호출되어 할당될 것 같아서 메모리 관리에 단점이 있을 것 같고 (추측입니다), 후자는 (훅의 함수를 받아야하는 대상 컴포넌트가 자식 내부에 더 깊은 뎁스에 있다고 할 때) Prop Drilling의 단점이 있을 것 같은데요 선생님은 어떻게 생각하시나요?
react typescript react-query supabase zustand
최성준
2025-12-29T02:23:32.864Z
댓글 1
좋아요 0
조회수 80
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
안녕하세요. 강의 잘 듣고 있습니다. 두가지 질문이 있어서요 프로젝트 진행중에 새로운 기능이나 변경 사항이 있을때마다 /init를 해주면 좋은가요?(토큰 사용량과는 상관없이) CLAUDE.md 파일 내용은 원래 영어로 되어 있는건에 이번 강의에서 보니깐 한글로 요청해서 하시던데, 클코가 프로젝트를 이해하고 수행하는데 영어와는 차이가 없을까요? (역시 토큰 사용량과 상관없이, 한글 사용해도 클코가 잘 이해하고 잘 따르는지 궁금합니다.)
react next.js cursor tailwindcss claude
kelo
2025-12-29T01:07:37.013Z
댓글 1
좋아요 0
조회수 748
해결됨
원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
안녕하세요, 이미지 생성까지 강의를 잘 따라오고 있습니다! 양질의 강의 감사드립니다. 너무 쉽게 잘 설명해주셔서 막힘없이 잘오고 있습니다. 이제 영상 편집으로 넘어가야되는데요, 그전에 궁금한 점이 1가지 있어 질문드립니다. 현재 한 주제에 대해서 이미지 5장 생성까지 완료한 상황인데요. 5장 중 4번째 이미지 1장의 퀄리티가 좀 아쉽습니다. (이 경우에는 이미지 생성 프롬프트에 이미지 내에 별도로 텍스트를 기재하지말아 달라는 설명도 추가하는게 좋을까요?) 혹시 자동화 진행하실 때, 이런 경우는 그냥 무시하고 가시는지 아니면 이런 경우만 따로 검증하셔서 이 이미지에 대한 생성만 별도로 하신 다음 영상에 집어넣으시는지 궁금합니다!
python youtube-api n8n ai-활용-(ax)
길민수
2025-12-28T14:38:59.345Z
댓글 1
좋아요 0
조회수 76
미해결
Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
예를들어 landing 페이지에서 특정 페이지를 prefetching하는데 가져오는 그 페이지내에서 사용되는 데이터가많거나 할경우 prefetch가 독이되는 경우가 있을까요? 아니면 웬만하면 무조건 쓰는게 맞을까요?
dev_junior
2025-12-28T14:28:37.469Z
댓글 2
좋아요 0
조회수 123
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
git : 'git' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확 한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + git -v + ~~~ + CategoryInfo : ObjectNotFound: (git:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 이렇게 떠용. 재설치 해야 하나요?
react next.js cursor tailwindcss claude
조르바
2025-12-28T13:46:16.396Z
댓글 2
좋아요 0
조회수 279
미해결
React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
안녕하세요, 평소에 짐코딩님 강의 잘 듣고 있습니다. setForm에서 오브젝트로 title만 업데이트 해주더라도 기존의 description 값은 어떻게 그대로 유지가 되는 걸까요?
react React-Context react-router tailwindcss react-query
Jaehyeon Lee
2025-12-28T11:02:21.617Z
댓글 2
좋아요 1
조회수 78
해결됨
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요 강의 잘 듣고 있습니다! 다름이 아니고 (3.5) Zustand 미들웨어 2 강의를 들으며 실습 중, 알려주신 Redux DevTools 설치 이후 강의와 같이 한번 클릭하여도 anonymous가 두 번씩 찍혀서 노출되는데 제가 다시 확인해봐야 할 부분이 있을까요? 감사합니다.
뚜루뚜루
2025-12-28T10:21:07.873Z
댓글 2
좋아요 0
조회수 86
미해결
파이썬으로 마케팅 자동화하기
id_elem = driver.find_element_by_id('id') id_elem.click() 똑같이 따라하고 있는데 이 부분에서 계속 none type이라고 에러가 나옵니다. 완젼 초짜라 우째해야 할런지 감이 없네요.
조르바
2025-12-28T09:08:12.788Z
댓글 1
좋아요 0
조회수 69
해결됨
[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
안녕하세요. 바이브코딩 강의 너무 잘 듣고 있습니다. 혹시 강의에서 완성된 코드의 github 주소 혹은 완성된 결과 프로젝트를 받을 수 있을까요? 매번 자료를 다운로드 받는 게 다소 번거롭기도 하고, 완성된 결과를 비교하면서 공부하고 싶어서 그렇습니다...! ㅠ
react next.js cursor 프롬프트엔지니어링 바이브코딩
수수수
2025-12-28T08:48:56.004Z
댓글 2
좋아요 0
조회수 120
미해결
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
안녕하세요 선생님 선생님 리액트 기초 강의를 들었는데 제 기억에서는 그 리액트 파일명을 대문자로 써야한다? 이렇게 들었던 거 같은데 (아니면 죄송) 왜 여기에서는 파일명을 소문자로 쓸까요? 그리고 파일명하고 그 내보내는 함수를 다르게 쓰는 이유가 있나요? 그리고 왜 화살표함수로 안만들고 function으로 할까요? 그리고 export를 아래에 안쓰는 이유가 있을까요? 수업시간에 설명했는데 제가 놓친거면 죄송합니다 ㅠㅠ
react typescript react-query supabase zustand
김성관
2025-12-28T08:32:29.264Z
댓글 2
좋아요 0
조회수 51
미해결
구글 애드센스 수익형 워드프레스 블로그 만들기
강의에 대한 질문은 인프런 질문하기나, 1:1 커뮤니티 페이지에서 문의하시면 빠르게 답변 드리고 있습니다. (커뮤니티 주소 https://itconnect.dev/커뮤니티/ ) 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요 테마 파일과 CSS, PHP 파일은 아래 링크를 통해 받아보실 수 있습니다. https://drive.google.com/drive/folders/1KtkfsZe2uy5jNMps0F6gnqlEvZnq0mRN?usp=sharin g
HTML/CSS wordpress php 웹-디자인 반응형-웹
이재희
2025-12-28T07:37:11.929Z
댓글 2
좋아요 0
조회수 82
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
강의 중 프롬프트 창에 #을 입력해서 빠르게 등록을 하는데, 저의 경우는 #을 입력해도 # to memorize가 보이지 않습니다
react next.js cursor tailwindcss claude
크리스추
2025-12-28T06:30:06.228Z
댓글 1
좋아요 1
조회수 93
해결됨
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
스크린샷에서 레이아웃부터 어떻게 설정하면 되는거죠?
react next.js cursor tailwindcss claude
read.eun77
2025-12-28T06:10:03.847Z
댓글 2
좋아요 0
조회수 109
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
cursor에서 control+esc 를 눌렀을 때 claude code가 나오지 않을때는 어떻게 하나요?
react next.js cursor tailwindcss claude
read.eun77
2025-12-28T05:18:25.582Z
댓글 3
좋아요 0
조회수 206
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
스크린샷처럼 .claude 안에 md 파일이 없는 경우는 어떻게 해야 하나요?
react next.js cursor tailwindcss claude
read.eun77
2025-12-28T04:46:34.331Z
댓글 2
좋아요 0
조회수 229