29,700원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 리액트로 나만의 블로그 만들기(MERN Stack)
register창이 열리지 않습니다ㅜ
삭제된 글입니다
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
요청 주소에서 undefined가 찍힙니다
카테고리를 1번째 Category 라고 작성해보았는데요~ Front는 Category: "1번째 Category" 가 뜨면서 잘 작동하는 것 같은데, console을 살펴보니 GET http://localhost:7000/api/post/category/undefined 500 (Internal Server Error) Error: Request failed with status code 500 (CategoryResult.js:13) 1번째 Category (CategoryResult.js:14) 이렇게 뜨면서 에러가 발생하고 있습니다! 아마 제 생각에는 요청하는 주소가 .../category/undefined 와 같이, 1번째 Category가 undefined로 되는게 문제가 아닐까 생각하게 되었습니다. 그래서 postSaga.js에서 CategoryFindAPI를 보니 const CategoryFindAPI = (payload) => { return axios.get(`/api/post/category/${encodeURIComponent(payload)}`) } 위와 같이 작성하였습니다. 제가 어디서 실수했는지 감을 잡지 못해서... 가르침 부탁드립니다! 그리고 조금 더 console을 살펴보니, https://github.com/sideproject0214/blog/blob/master/server/routes/api/post.js 위 페이지에서 275번째 줄 console.log(result, "Category Find result") 찍어보니 많은 내용 중에서, _conditions: { categoryName: { '$regex': 'undefined', '$options': 'i' } }, 이렇게 찍히는 것 까지는 확인했습니다! 서버에서 params를 제대로 전달 받지 못하고 있어서 undefined가 찍히는 것 같은데, 어떻게 해결하면 좋을까요...? 난해한 질문 죄송합니다 ㅜㅜ
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
aws 배포중 문제
안녕하세요. aws 배포중에 문제가 생겨서 질문 남겨요. 주소는 http://15.164.101.160/ 입니다. depoly(2) 까지 하였는데 네트워크를 보니 프론트에서 파일을 받아오질 못하고 있습니다. csp 오류가 떠서 client 쪽에서 이렇게 빌드해주었는데 여전히 파일을 못받아오고 있네요 cross-env INLINE_RUNTIME_CHUNK=false npm run build 로컬에서 테스트중에 화면까지는 떴는데 이미지 파일이 모두 csp 오류로 못받아와지네요.. index.html에 meta tag를 추가해보았는대도 여전히 계속 떠서 해결을 못하고 있습니당. 어디부분을 손봐야될지 조언해주시면 감사하겠습니다! 구글링 계속 해보아도 잡질 못하고 있네요.. Refused to load the image '<URL>' because it violates the following Content Security Policy directive: "img-src 'self' data:".
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
ERR_UNSUPPORTED_DIR_IMPORT 에러 관해 질문드립니다.
해당 오류인데 혹시 선생님께서 어느 오류인지 설명해주실 수 있으실까요..? https://github.com/Spooder02/mernblog 깃 주소입니다!
- 해결됨리액트로 나만의 블로그 만들기(MERN Stack)
인피니트 스크롤, 콘솔문제
안녕하세요. 1. 59) 인피니트스크롤에 관련해서 질문 드립니다. 하단부분 감지되었을때 이벤트가 중복 실행이 되는것 같아요. 이렇게 초기화면이 로딩이 되었다가 GET /api/post/skip/0 200 269.494 ms - 2740 감지 되면 두번 호출 하더라구요. GET /api/post/skip/6 200 263.764 ms - 2793 GET /api/post/skip/12 200 260.202 ms - 1285 ssaple.net 페이지에서도 한번 확인해보았는데 0 => 6 12 => 18 24 30(last) 이렇게 받아와지네요 2. 서버쪽은 IDE 콘솔에 잘 찍히는데 클라이언트쪽은 언제부턴가 브라우저에서 콘솔 내용이 보이질 않습니다. App.js 에서도 콘솔을 여러개 찍어도 브라우저 콘솔창에 보이질 않네요 그래서 어떤 값이 들어오는지 콘솔로 테스트를 할수가 없어서 네트워크 탭에서 확인하고 있어요 ㅠ 혹시 어떤 문제인지 아시는지 궁금합니다.!
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
코드내에서 쉼표를 자동으로 찍어주는 기능이있나요?
선생님 혹시 강의 중간중간 쉼표가 안찍혀있는 부분들에 대해서 자동으로 쉼표를 찍어주시는 기능을 사용하시는 것 같은데 어떤기능인지 알 수 있을까요?
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
로그인이 에러가 뜹니다
https://github.com/hwd3004/Blog/tree/28-Header(7)-/-history%40-4.7.2 새 계정 만들어서 하면, 만든 아이디로 로그인까지 잘되어지고, 로그아웃도 잘되는데, 있는 아디로 로그인하려하면 에러가 뜹니다. 무엇을 수정해야할까요?
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
ckeditor 상단 편집 아이콘 관련해서..
아래 그림처럼 아이콘 크기가 맞춰지지 않네요.. bootstrap나 custom.scss 가 문제 인가 싶어서 빼보았지만 그대로 였고, editConfiguration 이나 webpack.config.js 문제인가 싶어서 사이드프로젝트 깃헙에서 소스 복붙 했지만 그대로네요 :(
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
안녕하십니까 router.get('/user', auth ... 부분 질문있습니다.
로그아웃 성공 코드 밑에 작성한 router.get('/user', auth, ... 부분에서 auth가 왜 코드 사이에 들어가는 지 이유를 모르겠습니다. 아래 코드에서는 auth를 사용하지도 않는데 왜 작성하는 지 알려주시면 감사하겠습니다!!
- 해결됨리액트로 나만의 블로그 만들기(MERN Stack)
선생님 질문이 있습니다~!
강의 14:20 즈음, server/routes/api/post.js 작성 중에, 87번 코드와, 103번 코드에서 약간에 차이가 보이는 듯 한데, 다른 코드와는 다르게 유독 103번 줄에는 await Post.findByIdAndUpdate(newPost._id, { $push: { } 없이, category: findResult._id }) 이렇게 코딩이 되어있는데, 혹시 $push: {} 없이 작성을 하더라도 나중에 완성되고 나서 작동하는데는 문제가 없나용~? (항상 잘 수강하고 있습니다 친절한 강의 감사드려요~~^^)
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
reactstrap이랑 react-bootstrap이랑 다른건가요?
다른 강의에서는 npm i bootstrap react-bootstrap 으로 설치해서 하였거든요
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
아래처럼 이미지가 정렬안되있는 현상은 어떤걸 잘못 입력한것일까요??
(사진)
- 해결됨리액트로 나만의 블로그 만들기(MERN Stack)
모달팝업 로그인 강좌듣다가 로그인은 되지만 팝업 메시지가 전달이 안되어서 문의 드립니다.
안녕하세요 강좌 재미있게 듣고 잇다가 조금 안되는 기능이 있어서 문의 드립니다. 23강좌까지 가다가 모달 팝의 로그인의 sucess 콘솔 메시지는 보았는데 로그인 정보와 로그인 실패했을때 메시지 정보가 모달창에서 나와야 하는데 정상적으로 나오지 않아서 소스 내용을 작성한것을 올려 봅니다. 1) 클라언트 <LoginModal.js> --message 처리 부분 const LoginModal = () => { const [modal, setModal] = useState(false); const [localMsg, setLocalMsg] = useState(''); const [form, setValues] = useState({ email: "", password: "" }); const dispatch = useDispatch(); const {errorMsg} = useSelector((state) => state.auth); useEffect(() => { try{ setLocalMsg(errorMsg); }catch(e){ console.log(e); } }, [errorMsg]) const handleToggle = () => { .............. -- 메시지 출력 부분 <ModalBody> {localMsg ? <Alert color="danger">{localMsg}</Alert> : null} <Form onSubmit={onSubmit}> <FormGroup> .............. <authSaga.js> 파일은 정삭으로 서버를 호출하고 있습니다 <authReducer.js> case LOGIN_FAILURE: console.log("여기는 오나요 실패하면 "); localStorage.removeItem("token"); return { ...state, ...action.payload, token: null, user: null, userId: null, isAuthenticated: false, isLoading: false, userRole: null, errorMsg: action.payload.data.msg, }; case CLEAR_ERROR_REQUEST: .................. 이부분도 정상으로 실패 하면 호출을 하는데,,, 문제는 errorMsg: action.payload.data.msg, 에서 메시지가 없다는것과, payload의 데이터가 아무것도 없어서 undefied가 나오고 있습니다. 2) 서버쪽 <router/auth.js> router.post('/', (req, res) => { const {email, password} = req.body; //Simple Validateion if(!email || !password){ return res.status(400).json({msg:"모든 필드 채워주세요 "}) } // check for exising user User.findOne({email}).then((user) => { if(!user) return res.status(400).json({msg:"유저가 존재하지 않습니다."}); //validate password bcrypt.compare(password, user.password).then((isMatch)=> { if(!isMatch){ return res.status(400).json( { msg:"비밀번호가 일치 하지 않습니다." } ); } jwt.sign({id:user.id}, JWT_SECRET, {expiresIn:"2 days"},(err, token)=>{ if(err) throw err; res.json({ token, user:{ id: user.id, name: user.name, email: user.email, role: user.role, } }); }); }); }); }); -- 여기 있는 status(400).json({msg:"...."}); 이부분의 데이가 클라언트쪽에 전달이 안되는것 같습니다. 그러나 테스트 할때 400을. status(200)으로 변경해서 넘기면 실패했다는 메시지는 전달되지만, 화면상에 메시지는 나오지 않습니다, 보시면 type: LOGIN_FAILURE을 호출 하고 state까지 있지만 , action.payload.data는 undefined가 되어 있어서 어디가 잘못 된거인지 궁금해서 문의 드립니다.
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
안녕하세요 . greenlock에서 오류가 발생합니다.
C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog>npx greenlock init --config-dir ./server/config/greenlock.d --maintainer-email 'thdwlgnsl@naver.com' (node:9388) UnhandledPromiseRejectionWarning: Error: missing or malformed `maintainerEmail` (or `author` from `package.json`), which is used as the contact for support notices at Object.Init._init (C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\lib\init.js:110:19) at Object.greenlock._create (C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\greenlock.js:58:22) at Object.G.create (C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\greenlock.js:482:15) at C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\bin\init.js:56:31 at Object.CLI.main (C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\bin\lib\cli.js:176:5) at Object.<anonymous> (C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\bin\init.js:23:5) at Module._compile (internal/modules/cjs/loader.js:1137:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10) at Module.load (internal/modules/cjs/loader.js:985:32) at Function.Module._load (internal/modules/cjs/loader.js:878:14) at Module.require (internal/modules/cjs/loader.js:1025:19) at require (internal/modules/cjs/helpers.js:72:18) at C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\bin\greenlock.js:18:9 at Array.some (<anonymous>) at Object.<anonymous> (C:\Users\thdwl\OneDrive\바탕 화면\myBlog\blog\node_modules\@root\greenlock\bin\greenlock.js:16:3) at Module._compile (internal/modules/cjs/loader.js:1137:30) (node:9388) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) (node:9388) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. invalid maintainer contact info: null app.all('*', (req, res, next) => { let protocol = req.headers['x-forward-proto'] || req.protocol; if (protocol === 'https') { // if(req.secure) next(); } else { let to = `https://${req.hostname}${req.url}`; res.redirect(to); } }); greenlock .init({ packageRoot: path.join(__dirname, '../'), configDir: path.join(__dirname, '../', 'server/config/greenlock.d'), maintainerEmail: 'thdwlgnsl@naver.com', cluster: false, }) .serve(app, () => { console.log('greenlock work'); }); 이유를 찾아 보곤 있는데 찾게 되면 바로 댓글 달겠습니다. 감사합니다. 항상 좋은 답변 감사합니다.
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
여기서요
await Category.deleteMany({ _id: CategoryUpdateResult }) ; 이렇게 적어주셧는데 categoryUpdateResult안에 _id가 따로잇는데 categoryUpdateResult._id이렇게 적어주어야하 는거아닌가용??
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
리액트에서 함수 호출할때
리액트에서 함수를 호출할때 1. <div onClick={someFunction}.../> 2. <div onClick={someFunction()}.../> 이렇게 호출하는것을 보았습니다. 둘의 차이점은 무엇이고, 언제 어떻게 사용하는것인가요?
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
오타인가요?
if (isNullOrUndefined(findResult)) { const newCategory = await Category.create({ categoryName: category, }); await Post.findByIdAndUpdate(newPost._id, { $push: { category: newCategory._id }, }); Post는 하나의 category만 갖는데 push가 맞나요? 이게 맞는건가요?? await Category.findByIdAndUpdate(newCategory._id, { $push: { posts: newPost._id }, }); await User.findByIdAndUpdate(req.user.id, { $push: { posts: newPost._id }, }); } else { await Category.findByIdAndUpdate(findResult._id, { $push: { posts: newPost._id }, }); await Post.findByIdAndUpdate(newPost._id, { category: findResult._id, }); 이게 맞는건가요?? 둘이 달라서 둘중하나는 틀린거 같아서 질문드립니당 await User.findByIdAndUpdate(req.user.id, { $push: { posts: newPost._id }, }); }
- 해결됨리액트로 나만의 블로그 만들기(MERN Stack)
라우터에서
삭제된 글입니다
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
11강 async로 바꿔봤는데 맞나요 ??
제가 예전에 강의를 ckeditor부분까지 듣다가 공부할게 좀 있어서 지금 다시 보는데요... router.post('/', async (req, res) => { try { console.log(req.body); const { name, email, password } = req.body; if (!name || !email || !password) { return res.status(400).send('입력하지 않은 칸을 채워주세요.'); } 1. // Check for exising user const exUser = await User.findOne({ email }); if (exUser) { return res.status(400).send('이미 가입된 유저가 존재합니다.'); } const newUser = await new User({ name, email, password, }); const hashedPassword = await bcrypt.hash(password, 10); newUser.password = hashedPassword; await newUser.save(); jwt.sign( { id: newUser.id }, JWT_SECRET, { expiresIn: 3600 }, // (err, token) => { if (err) throw err; res.status(200).json({ token, user: { id: newUser.id, name: newUser.name, email: newUser.email, }, }); }, ); } catch (error) { console.error(error); } }); 이렇게 했는데요. 코드에 틀린 부분이 있을까요? 2. 이코드는 그냥 sequelize에서는 이런식으로 했었는데 mongoDB는 이런식으로 안되나용?? const newUser = await User.create({ name, email, password:hashedPassword, }); sequelize로 mysql할때랑은 좀 다른거 같아서 헷갈려용 아 참고로 bcryptjs말고 그냥 bcrypt로 했어요. 그리고 첫번째 복사한 코드는 postman이랑 mongodb에는 데이터가 저장이 잘되긴했는데 두번째 복사한 코드는 실험을 안해봐서 혹시 되는지 해서 여쭤봤습니다. 3.jwt.sign( { id: newUser.id }, JWT_SECRET, { expiresIn: 3600 }, // (err, token) => {..... 토큰을 이렇게 주셨자나요 근데 글을 쓰다가 3600초가 지나면 토큰이 만료되서 글이 안써지지않나요???? 이런 경우 어떻게 처리하나요? 저 만료시간을 늘리나요?? 4.마지막으로요. 제가 next로 만들건데요. ckeditor부분하고 배포부분이 많이 다른가요??
- 미해결리액트로 나만의 블로그 만들기(MERN Stack)
ref부분이요..
comments: [ { post_id: { type: mongoose.Schema.Types.ObjectId, ref: "posts", }, comment_id: { type: mongoose.Schema.Types.ObjectId, ref: "comments", }, }, ], posts: [ { type: mongoose.Schema.Types.ObjectId, ref: "posts", }, 위의 ref부분들은 참조인데 왜 s를 다 붙이나용? s붙은건 없지 않나요? const Post = mongoose.model('post', PostSchema); const Comment = mongoose.model('comment', CommentSchema); 다 post, comment 로 내보낸 걸로 알고 있는데 왜 s를 붙이나요???