무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
로그인시 /api/users/login,~~/login 404에러 뜨시는분들
/client/src/user_action.js에 const request = axios.post('/api/users/login', dataToSubmit) // DB (server/index.js)주소와 /sever/index.js에 app.post('/api/users/login',(req, res) =>{주소를 같게 맞춰 주시면 될듯합니다. 참고해주세요.
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
provider에서 에러가 납니다.
import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; import 'antd/dist/antd.min.css' import { Provider } from 'react-redux'; import {applyMiddleware, createStore} from 'redux'; import PromiseMiddleware from 'redux-promise'; import reduxThunk from 'redux-thunk'; //import Reducer from './_reducers'; const createStoreWidthMiddleware=applyMiddleware(); const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <React.StrictMode> <Provider> <App /> </Provider> </React.StrictMode> ); reportWebVitals();Provider를 제거하면 에러가 나지 않고 넣으면 위와같이 에러가납니다 혹시 아시는분 계실까요? 상위버젼에서 Provider 태그가 필요 없다고 하시는데 그럼 store는 어찌쓰는지요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
postman send 시 false
안녕하세요 send 시 success false 가 뜨는데 이유가 뭘까요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
next()
10강 Bcrypt로 비밀번호 암호화 하기에서 User.js의49번째 줄에서 next()로 인해 index.js의 38번째 줄 미들웨어 함수로 이동한다고 했는데 많은 미들웨어 함수중에서 38번째 줄 미들웨어 함수로 이동하는 이유가 뭔지 궁금합니다
- 해결됨따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
다 잘 되는데 postman에서 err가 떠요
처음엔 config.mongoURI를 못 읽어와서 mongoDB연결이 안 되더니, console.log한 번 찍고 나니까 이상하게 돼요그런데 postman에서 err가 뜹니다..이유가 뭘까요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
12강 데이터베이스에 있는 정보로 로그인 부분 오류가 계속 납니다
안녕하세요 선생님 12강 데이터베이스에 있는 정보로 로그인 하는 쪽 강의 질문 드립니다.app.post("/api/users/login", (req, res) => { // 요청된 이메일을 데이터베이스에서 찾는다 User.findOne({ email: req.body.email }, (err, user) => { if (!user) { return res.json({ loginSuccess: false, message: "제공된 이메일에 해당하는 유저가 없습니다", }); } // 요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인 user.comparePassword(req.body.password, (err, isMatch) => { // 비밀번호가 틀릴 경우 if (!isMatch) return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다", }); // 비밀번호까지 맞다면 토큰을 생성하기 user.generateToken((err, user) => { if (err) return res.status(400).send(err); // 토큰을 저장한다. 쿠키 로컬스토리지 세션 등 // 여기서는 쿠키 사용 // x_auth라는 이름으로 토큰이 들어감 res .cookie("x_auth", user.token) .status(200) .json({ loginSuccess: true, userId: user._id }); }); }); }); });위와 같이 작성된 코드를 app.post("/api/users/login", async (req, res) => { // 요청된 이메일을 데이터베이스에서 찾는다 try { const user = await User.findOne({ email: req.body.email }); if (!user) { return res.json({ loginSuccess: false, message: "제공된 이메일에 해당하는 유저가 없습니다", }); } // 요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인 const isMatch = await user.comparePassword(req.body.password); // 비밀번호가 틀릴 경우 if (!isMatch) { return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다", }); } // 비밀번호까지 맞다면 토큰을 생성하기 const token = await user.generateToken(); // 토큰을 저장한다. 쿠키 로컬스토리지 세션 등 // 여기서는 쿠키 사용 // x_auth라는 이름으로 토큰이 들어감 res .cookie("x_auth", token) .status(200) .json({ loginSuccess: true, userId: user._id }); } catch (err) { return res.status(400).json({ loginSuccess: false, error: err }); } });이렇게 변경했습니다. 그런데 postman으로 자꾸 실행해보면 비밀번호가 틀렸다는 오류를 받고 있습니다. 그리고 서버가 꺼지는 현상이 발생하고 있습니다. isMatch문이 잘못된 것 같아서 !isMatch 예외문을 주석처리하고 실행하면 서버가 바로 꺼져버리는 현상이 발생합니다. 어떻게 코드를 변경해야 할까요?그리고 console.log()로 오는 값들을 확인하고 싶은데 cossole.log()로 찍은 보고싶은 값을 어떻게 볼 수 있나요? http://localhost:5000/api/users/login 로 들어갔는데도 안보입니당..%% 이 코드를 /register로 postman을 보낼때는 정상적으로 작동하고 monogdb에도 잘 등록이 되서 다른 부분은 오류가 아닌 것 같습니다 %%%% 스키마 부분 코드도 첨부합니다 (선새인ㅁ과 똑같이 작성함) %%userSchema.methods.comparePassword = function (plainPassword, cb) { // plainPassword 는 입력한 값 데이터베이스 비밀번호는 $2b$10 등 으로 암호화 되어 있음 // 그러므로 plainPassword를 암호호 해야 함 // bcrypt를 이용해 암호화 bcrypt.compare(plainPassword, this.password, function (err, isMatch) { // this.password는 5번째줄에 userSchema에서 가져옴 if (err) return cb(err); cb(null, isMatch); }); }; userSchema.methods.generateToken = function (cb) { let user = this; // 데이터베이스의 id 를 넣고 이름을 정해준다. // 이후 secretToken을 입력하면 user._id가 나온다 let token = jwt.sign(user._id.toHexString(), "secretToken"); // user의 token에 방금 만든 token을 넣어준다. user.token = token; user.save(function (err, user) { if (err) return cb(err); cb(null, user); }); };
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
리액트랑 강의를 동시에 같이 진행해야하나요 ? ..
혹시 강의를 node react 동시에 같이 들어야하나요 ?? 노드강의만 먼저 순서대로 듣고있는데 갑자기 2분 15초경에 갑자기 유저모델까지 만들었다고 말씀해주시는데 노드 이전강의는 몽고DB연결만 한걸로 나와서요 ..
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
7강 포스트맨 질문
회원가입으로 send하면저는 오히려 결과가 나오질 않습니다.ㅜㅜ제눈엔 오타가 안보이는데 어떠문제일까요const express = require("express"); const app = express(); const PORT = 4000; const bodyParser = require('body-parser'); const {User} = require("./models/User"); //application/x-www-form-urlencoded 정보 분석 app.use(bodyParser.urlencoded({extended: true})) //application/json파일을 분석 app.use(bodyParser.json()) app.get('/',(req, res) => {res.send('Hello Word!')}) app.post('/register',(req,res)=>{ //회원가입할 때 필요한 정보들을 client에서 가져오면, //그 정보들을 DB에 넣어준다. const user = new User(req.body); //user모델에 정보가 저장됨 //실패 시, 실패한 정보를 보내줌 user.save((err, userInfo) => { if(err) return res.json({success: false, err}) return res.status(200).json({success: true}) }) }) app.listen(PORT, () => { console.log("서버 실행"); });
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
토큰 삭제 오류 질문
포스트맨에서 success: true는 뜨는데 막상 DB로 들어가면 토큰이 여전히 남아있습니다.findOneAndUpdate가 콜백함수를 지원하지 않아 then. catch로 수정해서 사용했는데 혹시 문법적 오류가 있어서 안 되는걸까요? app.get('/api/users/logout', auth, (req, res) => { User.findOneAndUpdate({ _id: req.user._id }, { token: "" }) .then(() => { console.log(req.user._id); res.status(200).send({success: true}) }) .catch((err)=>{ res.json({ success: false, err }); }) })이렇게 수정을 했는데 토큰을 지우지 못합니다... 그리고 혹시나 해서console.log(req.user._id')를해서 id를 읽어올 수 있는지 확인해봤는데 undefined라고 뜨더라고요... 어디서 오류가 나는 걸까요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
model.findone() no longer accepts a callback 오류
findOne()도 save()와 마찬가지로 몽구스 5.0부터는 콜백함수를 지원하지 않기 때문에 기존에 app.post('/api/users/login',(req, res) =>{ // 요청된 이메일을 데이터베이스 찾기 User.findOne({email: req.body.email}, (err, docs) =>{ if(!docs){ return res.json({ loginSuccess: false, messsage: "제공된 이메일에 해당하는 유저가 없습니다." }) } // 요청된 이메일이 DB에 있다면 Password가 일치한지 확인 user.comparePassword(req.body.password, (err, isMatch) => { if(!isMatch) return res.json({loginSuccess: false, messsage: "비밀번호가 틀렸습니다."}) // Password가 일치하다면 토큰 생성 user.generateToken((err, user)=>{ if(err) return res.status(400).send(err); // 토큰을 저장 res.cookie("x_auth", user.token) .status(200) .json({loginSuccess: true, userId: user._id}) }) }) }) })에서 콜백함수가 들어가 있기 때문에 callback을 쓰지 않고 promise 또는 async/await로 수정해서 사용하시면 됩니다.저같은 경우는 promise로 수정해서 .then .catch로 수정을 했습니다.app.post('/api/users/login',(req, res) =>{ // 요청된 이메일을 데이터베이스 찾기 User.findOne({email: req.body.email}) .then(docs=>{ if(!docs){ return res.json({ loginSuccess: false, messsage: "제공된 이메일에 해당하는 유저가 없습니다." }) } docs.comparePassword(req.body.password, (err, isMatch) => { if(!isMatch) return res.json({loginSuccess: false, messsage: "비밀번호가 틀렸습니다."}) // Password가 일치하다면 토큰 생성 docs.generateToken((err, user)=>{ if(err) return res.status(400).send(err); // 토큰을 저장 res.cookie("x_auth", user.token) .status(200) .json({loginSuccess: true, userId: user._id}) }) }) }) .catch((err)=>{ return res.status(400).send(err); }) })참고하시고 수정하시면 될 것 같습니다.
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
강의에 나오는 문법이 적용되지 않습니다
MongooseError: Model.prototype.save() no longer accepts a callback이 오류가 떠서 확인해보니 Mongoose6부터 callback 문법이 사용되지 않는다고 합니다버전을 바꾸는 것은 시도 하지 않았고.then .catch or async await 로 바꾸고 싶은데수 시간 시도해보다가 안되서 글 남깁니다. callback 구문을 보고 .then .catch or async await이 방식으로 바꾸는 법을 알고 싶습니다.이 부분에서만 에러가 발생하는지는 모르겠으나stack Overflow에 적어봤는데 역시 답을 얻을 수 없더라구요app.post("/login", (req, res) => { User.findOne({ email: req.body.email }, (err, user) => { if (!user) { return res.json({ loginSuccess: false, message: "제공된 이메일에 해당하는 유저가 없습니다.", }); } user.comparePassword(req.body.password, (err, isMatch) => { if (!isMatch) return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다." }); user.generateToken((err, user) => { if (err) return res.status(400).send(err); res.cookie("x-auth", user.token).status(200).json({ loginSuccess: true, userId: user._id }); }); }); }); });
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
mongoose save() 어쩌구 에러나시는 분들
app.post('/register',(req,res)=>{ //회원가입할 때 필요한 정보들을 client에서 가져오면, //그 정보들을 DB에 넣어준다. const user = new User(req.body); //user모델에 정보가 저장됨 //실패 시, 실패한 정보를 보내줌 user.save().then(()=>{ res.status(200).json({ success:true }) }).catch((err)=>{ return res.json({success:false,err}) }); })
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
한줄 if 쓸 때 return의 필요성
한줄로 if문을 쓰실 때 return을 붙이시는 이유가 있나요??제가 감히 생각해보면 return을 붙일 필요가 없는 것 같은데코드를 좀 더 명확하게 하시려고 붙이시는 건가요??
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
mongo DB config 에러
안녕하세요.dev.jsindex.js맞게 설정한거 같은데 아래와 같은 에러가 발생합니다.확인 부탁드립니다.
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
클라이언트 쿠키는 안 지우나요??
따라치며 공부하다 문득 궁금해서 질문남깁니다!DB 토큰을 공백으로 바꾸는 것까진 이해가 되었는데클라이언트에 존재하는 쿠키는 안 지워도 되는건가요??
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
프록시 링크
https://create-react-app.dev/docs/proxying-api-requests-in-development/
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
send 하면 {success : false, err : {} } 나오시는 분들
monogo DB 에 등록했던 ip 와 현재 ip 가 다르면 에러가 발생하더라고요monogo DB 사이트 접속 -> Network Access 클릭 -> ip 를 Edit 버튼 눌러서 현재 ip로 수정해주시면 됩니다.https://ip.pe.kr/ 들어가면 현재 ip 나오는데xxx.xxx.xxx/32 를 현재ip/32 로 바꾼 다음에 다시 해보세요.
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
코드의 흐름
데이터흐름이 이게 맞는지만 혹시 봐주실수 있나욤...
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
mongDB 연결 로그 안 뜨고 멈춤,,
포트 연결 로그는 뜨는데 그 다음에몽고DB 연결 로그 안 뜨고 그 상태에서 아무 실행도 안 됩니다... 에러메시지도 안 나오니 무슨 에러인지도 모르겠고..ㅠㅠㅠㅠ도와주세요몇번 서버 죽이고 다시 켜봐도 동일하네요ㅠㅠ어떻게 해결해야하나요??
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
useNavigate 오류
게시판 보면서 수정했는데 오류가 사라지지 않습니다.어떻게 수정하면 될까요?(LoginPage.js)(index.js)(App.js) (발생하는 오류)도와주시면 감사하겠습니다...ㅠㅠ