묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실무 중심! FE 입문자를 위한 React
자료 Git Source 주소 ??
survey-pie 코드 .. 404...error 입니다. 딱 1년 만에 이 강의 들으려고 왔는데... 흐음.. (요즘 트랜드..리액트 버전이나... 암튼... 자료 , 강의는 업데이트 되고 있나요?종종..수정해서 올리는 강의를 본적이 있어서..) 암튼..주속 확인 부탁드립니다.
-
미해결실무 중심! FE 입문자를 위한 React
교육자료 소스 바로 실행시..
안녕하세요문의드립니다. 일단 제공해 주신 소스를 풀어서실행을 해 보았습니다.(당연히 npm i...관련 module 설치 하고요)터미널: npm run start를 실행하면 위와 같은 화면만 나오네요.그리고 개발자 도구 내용을 보면 index.tsx ? .. 소스상에 파일이 없는데 궁금합니다.일단 실행이 해서 개발 완료된 화면을 보고자 합니다.실행하기 전에 선행 작업있나요?(각 확장프로그램..등... )가이드를 봐도 내용이..(제가 못찾은 건지.)설명 부탁드립니다.
-
미해결실무 중심! FE 입문자를 위한 React
교육자료 소스 바로 실행시..
안녕하세요문의드립니다. 일단 제공해 주신 소스를 풀어서실행을 해 보았습니다.(당연히 npm i...관련 module 설치 하고요)터미널: npm run start를 실행하면 위와 같은 화면만 나오네요.그리고 개발자 도구 내용을 보면 index.tsx ? .. 소스상에 파일이 없는데 궁금합니다.일단 실행이 해서 개발 완료된 화면을 보고자 합니다.실행하기 전에 선행 작업있나요?(각 확장프로그램..등... )가이드를 봐도 내용이..(제가 못찾은 건지.)설명 부탁드립니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
넥스트 버젼 질문
안녕하세요 강의를 사놓고 조금 듣고 네이티브 공부를 하다가 다시 공부를 하려고합니다 강의상에서는 넥스트를 9버젼을 쓰는데 최신 버젼을 쓰는걸 추천하실까요? 아니면 구버젼 그대로 쓰는걸 추천하실까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인시 401 Unauthorized 오류가 뜹니다
로그인시 401 Unauthorized 오류가 떠서리덕스 액션을 봤더니 LOG_IN_FAILURE에 error 내용이 비어 있었습니다.routes/user.jsconst 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.jsfunction 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.jsconst 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.jsconst 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.jsconst 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만 찍혔습니다..
-
미해결(2025 최신 업데이트)리액트 : 프론트엔드 개발자로 가는 마지막 단계
모바일 버전에 쓰이는 이미지를 다운받고 싶어요
강의 시간에 구글에서 찾은 이미지 말구요 그림 이미지요 모바일
-
미해결(2025 최신 업데이트)리액트 : 프론트엔드 개발자로 가는 마지막 단계
vite를 꼭 써야하나요
누나 저는 인텔리제이 리액트 프로젝트로 만드는데 거기서는 vite 안 쓰고도 npm start 하니까 만들어집니다. vite 를 쓰는 이유가 뭔가요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
강의 내용은 훌륭하나, 환경 설정 오류 때문에 진도를 나갈 수 없습니다. 20년 버전 강의.
최신버전으로 강의 업그레이드 하셔야 할거같아요..도저히 진행이 안되네요. 버전 차이가 너무 커서 환경 맞추는 거 자체가 고통스러워요.강의 게시일: 2020. 04. 22.마지막 업데이트일: 2025. 05. 13.난 마지막 업데이트일 보고 최신꺼인줄 ㅋㅋ 1.강의 내용은 훌륭하지만, 환경 설정 오류로 진도를 나갈 수 없음.2."ESLint 9.x / Vite 5.x 버전 충돌 문제 해결에만 수십 시간 소요"의존성 문제"현재 강의에서 사용하는 **eslint-config-react-app@7.0.1**이 최신 Node.js 환경에서 **eslint@9.x.x**와 충돌하여 ERESOLVE 오류가 발생합니다.""수강생들은 Hooks 규칙을 활성화하기 위해 강제로 ESLint를 8.x.x 버전으로 다운그레이드해야 하는 번거로움을 겪고 있습니다.""Tailwind CSS 설치 시 npx tailwindcss init -p 명령어가 환경 문제로 작동하지 않고, could not determine executable 오류가 반복됩니다.""CSS 전처리 설정, 특히 PostCSS 설정 방법이 현재 Vite 환경에 맞지 않아 추가적인 검색과 수정이 필요합니다."*tailwind**라는 잘못된 이름의 패키지를 설치하도록 안내된 부분을 지적하여 강사가 코드를 확인하도록 유도합니다.포함할 내용:"강의에서 안내하는 tailwind 패키지(비공식/폐기됨)가 아니라 tailwindcss (공식 패키지)를 사용해야 설치가 진행됩니다. 강의 코드와 명칭 수정이 필요합니다.""Node.js 20.x, React 18+, ESLint 8.x 또는 9.x를 기준으로 환경 설정 부분을 재녹화하여 제공해 주시길 간곡히 요청드립니다.""기존 수강생을 위해 최신 버전 환경 설정에 대한 가이드 문서(ReadMe)라도 제공되면 큰 도움이 될 것입니다."
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
강의 소스 코드 압축 풀기 오류
강의 소스 코드를 다운로드 받아 압축 풀기를 하는데 99% 끝부분에서 특정 파일이 에러가 발생해 넘어가지지를 않습니다.건너띄기로 100% 완료하기는 했지만 찜찜해서 문의 드립니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
npm i하면 바로, 라이브러리 오류없이 받아지고, 구동되는 소스는 없나요?
git소스 다운로드 받았는데, npm i면 에러나서, 실습이 어렵네요.혼자 디버깅하면 될 듯도 한데, 실습전에 진이 빠지네요.npm i하면 바로, 라이브러리 오류없이 받아지고, 구동되는 소스는 없나요?
-
미해결(2025 최신 업데이트)리액트 : 프론트엔드 개발자로 가는 마지막 단계
쇼핑몰관련 질문드립니다.
쇼핑몰 만들기 부분을 보고 있는데요,상품상세페이지 만드는데서 막히네요.메인에서 제품을 누르면 로그인화면이 뜨고 로그인을 하면 다시 메인으로 가는거까지는 되었는데요,거기서 다시 목록을 누르면 콘솔창에 해당하는 id정보가 나와야 하는데 App.jsx 에서 에러가 난다고 하는데 그대로 따라한 파일이라 어디가 틀린건지 잘 모르겠네요 import React, { useEffect } from 'react'; import { useParams } from 'react-router-dom'; const ProductDetail = () => { let {id} = useParams(); const getProductDetail = async () => { let url = `http://localhost:5000/products/${id}`; let response = await fetch(url); let data = await response.json(); console.log(data); }; useEffect(()=>{ getProductDetail(); },[]); return ( <div></div> ) } export default ProductDetail; import './App.css'; import 'bootstrap/dist/css/bootstrap.min.css'; import { useEffect, useState } from 'react'; import { Routes, Route } from 'react-router-dom'; import ProductAll from './page/ProductAll'; import Login from './page/Login'; import ProductDetail from './page/ProductDetail'; import Navbar from './component/Navbar'; import PrivateRoute from './route/PrivateRoute'; function App() { const [authenticate, setAuthenticate] = useState(false); //true이면 로그인이 됨, false이면 로그인이 안됨 useEffect(()=>{ console.log('aaa',authenticate); },[authenticate]); //값이 바뀔때마다 return ( <div> <Navbar/> <Routes> <Route path="/" element={<ProductAll/>}/> <Route path="/login" element={<Login setAuthenticate={setAuthenticate}/>}/> <Route path="/product/:id" element={<PrivateRoute authenticate={authenticate}/>}/> </Routes> </div> ) } export default App; <Route path="/product/:id" element={<PrivateRoute authenticate={authenticate}/>}/>이부분이 에러가 뜨는거 같아요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
강의자료는 어디서 볼 수있나요??
강의자료는 어디서 볼 수있나요??1강에 강의자료는 코드뿐이던데,,
-
미해결실무 중심! FE 입문자를 위한 React
13-1, 13-2 질문
강의에서 나온대로 다 따라 갔는데 아무것도 안됩니다.콘솔창에서는 const [surveyData, setSurvey] = useRecoilState(surveyState).questions; 에서Uncaught TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator)) 라는 에러 뜹니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
이 쇼핑몰 만들기 강의는 관리자페이지 만드는건 없나요
이 쇼핑몰 만들기 강의는 관리자페이지 만드는건 없나요
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
무한 스크롤 중 스크롤 튐 현상
무한 스크롤에서 추가 데이터가 load되는 순간, 스크롤 영역이 늘어나게 되는데요. 이 때 유저가 보고 있던 스크롤 위치를 잃고 튀는 현상이 있습니다 당장 생각나는 방법은 이전 scrollY를 갖고 있다가 useLayoutEffect 걸어서 data가 변경될 때 scrollTo 해주는 것인데요, 혹시 더 나은 방법 고민해보셨는지 궁금합니다
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
특정 페이지 접근을 막고 싶을 때
강의에서 프로필 페이지 접근을 막기 위해 useEffect + redirect 패턴을 사용해주셨는데요, 특정 페이지 접근을 막는 좀 더 고차원적인 방법을 고민해보신 경험이 있는지 궁금합니다 현재 방식은 useEffect라 해당 페이지 한번은 렌더링되다보니, 접근 자체를 막는게 아니라 한번 갔다가 돌아오는 식이라 아쉬운 부분이 있습니다최적화 관점 : 해당 페이지 js를 불러와야 함 등보안 관점 : 명확치 않으나 왠지 hole이 있을 것 같음
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
createGlobalStyle의 위치와 영향범위
createGlobalStyle이 컴포넌트 형태로 적용되다보니 마치 현재 컴포넌트 하위만 적용될 것 같은 느낌이 있는데요 실제 영향범위는 class 수정이므로 페이지 전체에 영향을 끼치다보니 개인적으로 비직관성이 느껴집니다 createGlobalStyle을 실제로 사용하신 경험이 있는지와 사용하셨다면 _app 외에 다른 위치에서도 쓰셨는지 궁금합니다
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
인라인 스타일 리렌더링 관련
인라인 스타일 사용 시 style이라는 객체 prop이 매번 달라져 리렌더링이 발생한다고 해주신 부분 관련하여 질문드립니다 부모가 리렌더링되는 상황이라 이와 무관하게 자식의 리렌더링도 유발하게 될텐데요자식 컴포넌트 자체에 memo를 적용하는 경우가 아니라면, useMemo를 쓰더라도 최적화 효과가 없을 것으로 보이는데 맞을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
웹에서 실시간 코드반영이 안돼요
jsx파일의 코드를 수정하면 영상처럼 바로바로 바뀌어야하는데 웹을 클릭하면 새로고침되고 클릭안하면 업뎃이 안돼요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
app.use질문
강의 영상 2분에 보면 app.use('/users', require('./routes/users'));가 있는데 전 영상들에서 저런 코드는 없었는데 따로 추가해야하나요