월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
강의예제 질문을 하겠습니다
질문중에 찾아 보니 깃허브에서 자료를 다운받고 ch1 부터 하면 된다고 하시던데 ch1,2 안에 코드가 이미 완성되어 있던데 이러면 그냥 nodebird > prepare 폴더를 만들어서 처음부터 따라 하면 되는걸까여?아님 그냥 깃허브에 있는 자료를 다운받아서 다 지우고 따라하는게 좋을까여?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
dynamic import활용하다가 만난 에러
제로초님 안녕하세요,강좌 내용을 활용해서 기능을 추가하다가 에러를 만났는데아무리 구글링하고 찾아봐도 뭘 어떻게 해결해야할지 몰라 질문 올립니다ㅠ상황은 draft-wysiwyg이라는 라이브러리를 활용해서 편집기능을 추가하려고 하고,이 라이브러리는 ssr에서는 에러가 난다고해서다이나믹 라우팅으로 가져와서 사용해야 해서 이렇게 가져왔더니 타입에러가 나고 있습니다.일단 코드 먼저 보여드릴게요아래는 에러메세지 입니다도움주시면 감사하겠습니다
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
오류인지 모르겠지만 질문이요
router.get('/:userId', async (req, res, next) => { // GET /user/1 try { const fullUserWithoutPassword = await User.findOne({ where: { id: req.params.userId }, attributes: { exclude: ['password'] // 제외 }, include: [{ model: Post, attributes: ['id'] // 가져오기 }, { model: User, as: 'Followings', attributes: ['id'] }, { model: User, as: 'Followers', attributes: ['id'] }] }) if (fullUserWithoutPassword) { const data = fullUserWithoutPassword.toJSON(); data.Posts = data.Posts; // 개인정보 침해 예방 data.Followers = data.Followers; data.Followings = data.Followings; res.status(200).json(data); }else { res.status(404).json('존재하지 않는 사용자 입니다'); } } catch (error) { console.error(error); next(error);서버사이드렌더링/해시태그까지 들었어요백엔드 routes/user.js 에서 user/1 부분 코드인데요 if (fullUserWithoutPassword) { const data = fullUserWithoutPassword.toJSON(); data.Posts = data.Posts; // 개인정보 침해 예방 data.Followers = data.Followers; data.Followings = data.Followings; res.status(200).json(data);여기부분 Posts, Followers, Followings 뒤에 .length 붙이는건가요?? 붙였던거 같은데 전 왜 붙이면 오류 나고 이렇게 안붙이면 오류가 안뜨는데 상관없나요? length 뺏더니 되네요..이거 찾다가 하루종일 걸렸네요ㅠ해시태그, post/번호 user/번호 다 되는데 어디서 문제생긴건지 상관없는건지 모르겠습니다어떤차이인가요?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
action type을 다른 파일로 분리할 때 파일 구조
액션파일을 다른 파일로 분리 할 때 파일 구조는 리듀서 파일 구조와 동일하게 하면 좋을까요?강의를 예로들면reducers | - index.js | - user.js | - post.jsactions | - user.js | - post.js이런 식으로 분리 하는게 좋은지 아니면 하나로 묶는게 좋은지 궁금합니다.
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
해시태그 등록 백 부분 질문 입니다.
안녕하세요 선생님. 콘솔에 post.addHashTags is not a function이라고 뜨면서 막상 데이터베이스에는 등록이 된 경우는 왜 그런 건가요? 테이블을 확인해보면 posts와 hashtags 테이블 둘 다 데이터가 잘 들어와있습니다.
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
sequelize 관련 질문입니다.
안녕하세요. 시퀄라이즈 관련 질문 하나 드리겠습니다.두 개의 테이블이 있습니다. parent 테이블과 child 테이블이 있는데 parent 테이블은 id 컬럼, num 컬럼 이렇게 두 개의 복합 primary 키로 되어 있고, child 테이블에서 참조를 해야 합니다. 외래키로 연결이 되어야 하는데쿼리문으로 테이블 생성 시에는FORIENG KEY(parent_id, parent_num) REFERENCES parent (id, num) 이런식으로 외래키 생성이 가능합니다.하지만 sequelize 에서 외래키 설정 할 때 이런식으로연결이 안되네요. 구글링으로 찾아봤는데 sequelize에서는 복합키에 외래키 연결이 안된다는 글도 보이고 해서 혹시 이런 식으로 복합키를 외래키로 연결하는게 sequelize에서는 불가능 한가요?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
프로젝트와 aws에 관해서 질문드립니다.
배포 강의를 듣다 아래와 같은 궁금한 점이 생겨 질문드리겠습니다. 구글링해보니 aws 프리티어는 월 750시간이 무료더라고요, 그렇다면 프론트, 백 두 서버 중 하나는 한달에 15,000원(?) 정도의 비용이 발생되는 것 같은데, 혹시 해당 비용을 절약할 수 있는 방법이 있을까요? 강의가 끝난 뒤에 추가로 팀 프로젝트를 진행하려고 합니다. 근데 해당 프로젝트 또한 배포하기에는 비용이 부담스러워서 github에만 올려놓으려고 하는데 이러한 방식을 사용하면 회사 입장에서는 프로젝트 경험을 절하시킬수도 있을까요? 바쁘시겠지만 답변해주시면 감사하겠습니다.
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
글쓰기? 리트윗? 새로고침 오류
백엔드 노드서버 구축하기까지 들었는데 어딘지 모르겠지만 어느순간부터 글쓰기 기능이 정상적이지 않습니다 리트윗쪽도 마찬가지에요 리트윗 할때이런 에러 뜨고 콘솔reduxRETWEET_REQUESTRETWEET_SUCCESS네트워크대략 이런 상태입니다리트윗 클릭하면 이런 오류뜨는데 새로고침하면 정상적으로 리트윗 되있어요 글쓰기도 오류창은 안뜨는데 무반응이고 새로고침하면 정상적으로 뜹니다 콘솔redux네트워크대략 이정도 뜨는데 마찬가지로 새로고침하면 글 작성 되있어요 백엔드쪽 부분 같기는 합니다ㅠㅠ백엔드 routes/post.js 리트윗,글작성 코드는 이런상태에요router.post('/', isLoggedIn, upload.none(), async (req, res, next) => { // POST /post try { const hashtags = req.body.content.match(/#[^\s#]+/g); const post = await Post.create({ content: req.body.content, UserId: req.user.id }); if (hashtags) { const result = await Promise.all(hashtags.map((tag) => Hashtag.findOrCreate({ where: { name: tag.slice(1).toLowerCase() } }))); await post.addHashtags(result.map((v) => v[0])); } if(req.body.image) { if (Array.isArray(req.body.image)) { const images = await Promise.all(req.body.image.map((image) => Image.create({ src: image }))); await post.addImages(images); } else { const image = await Image.create({ src: req.body.image }); await post.addImages(image); } } const fullPost = await Post.findOne({ where: { id: post.id }, include: [{ model: Image }, { model: Comment, include: [{ model: User, // 댓글 작성자 attributes: ['id', 'nickname'] }] }, { model: User, // 게시글 작성자 attributes: ['id,', 'nickname'] }] }, { model: User, // 좋아요 누른 사람 as: 'Likers', attributes: ['id'] }) res.status(201).json(fullPost); } catch (error) { console.error(error); next(error); } }); router.post('/images', isLoggedIn, upload.array('image'), async (req ,res, next) => { // POST /post/images console.log(req.files); res.json(req.files.map((v) => v.filename)); }); router.post('/:postId/retweet', isLoggedIn, async (req, res, next) => { // POST /post/1/comment try { const post = await Post.findOne({ where: { id: req.params.postId }, include: [{ model: Post, as: 'Retweet' }] }); if (!post) { return res.status(403).send('존재하지 않는 게시글 입니다.'); } if (req.user.id === Post.UserId || (post.Retweet && post.Retweet.UserId === req.user.id)) { return res.status(403).send('자신의 글은 리트윗할 수 없습니다'); } const retweetTargetId = post.RetweetId || post.id; const exPost = await Post.findOne({ where: { UserId: req.user.id, RetweetId: retweetTargetId } }); if (exPost) { return res.status(403).send('이미 리트윗 했습니다'); } const retweet = await Post.create({ UserId: req.user.id, RetweetId: retweetTargetId, content: 'retweet' }); const retweetWithPrevPost = await Post.findOne({ where: {id: retweet.id}, include: [{ model: Post, as: 'Retweet', include: [{ model: User, attributes: ['id', 'nickname'] }, { model: User, as: 'Likers', attributes: ['id'] }, { model: Image }] }, { model: User, attributes: ['id', 'nickname'] }, { model: Image }, { model: Comment, include: [{ model: User, attributes: ['id', 'nickname'] }] }] }); res.status(201).json(retweetWithPrevPost); } catch (error) { console.error(error); next(error); } });
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
제로초님 리액트 쿼리는 인강은 안 찍나요?
강의는 다 봤습니다. 정말 유익하고 이제는 자유자재 쓸 수 있게 되었습니다.리덕스와 리덕스 사가 디스패치등 서버와 통신하는 것도 충분히 할 수가 있게 되었습니다.다만 요즘에 리액트에서 많이 쓰이는 게 리액트 쿼리라고 하더라구요흑시 다음 강의 때 리액트 쿼리에 대한 것을 알려줄 수 있을까요?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
MulterError: Unexpected field 에러 질문
선생님 MulterError: Unexpected field라는 에러가 발생해서routes에서 이미지 업로드 할 때 upload.single('profile')으로 하고 프론트의 해당 input의 name도 'profile'로 맞췄는데도(해당 에러를 검색해보니까 인자와 인풋 네임을 맞추라고 해서요..) 같은 에러가 발생하는 이유가 뭔가요?일단 에러 코드의 전문은MulterError: Unexpected field at wrappedFileFilter (C:\Users\내컴\Desktop\passionary\back\node_modules\multer\index.js:40:19) at Multipart.<anonymous> (C:\Users\내컴\Desktop\passionary\back\node_modules\multer\lib\make-middleware.js:107:7) at Multipart.emit (node:events:390:28) at HeaderParser.cb (C:\Users\내컴\Desktop\passionary\back\node_modules\busboy\lib\types\multipart.js:358:14) at HeaderParser.push (C:\Users\내컴\Desktop\passionary\back\node_modules\busboy\lib\types\multipart.js:162:20) at SBMH.ssCb [as cb] (C:\Users\내컴\Desktop\passionary\back\nodemodules\busboy\lib\types\multipart.js:394:37) at feed (C:\Users\내컴\Desktop\passionary\back\node_modules\streamsearch\lib\sbmh.js:248:10) at SBMH.push (C:\Users\내컴\Desktop\passionary\back\node_modules\streamsearch\lib\sbmh.js:104:16) at Multipart._write (C:\Users\내컴\Desktop\passionary\back\node_modules\busboy\lib\types\multipart.js:567:19) at writeOrBuffer (node:internal/streams/writable:389:12)이렇습니다ㅠㅠ
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
certbot 설치 관련 질문드리겠습니다.
안녕하세요 제로초님 강의 잘 듣고있습니다.certbot 설치시 404 에러가 발생해서 다른 수강생분에게 답변해주신 블로그를 참고하여 설치를 했습니다.설치 후 이메일, dns설정 모두 정상적으로 설정 했습니다.근데 설치 후 블로그글을 참고해보니 서버를 실행하면 된다고 하셨는데 이게 어떤 말씀인지 알 수 있을까요?기초적인 질문 죄송합니다 ㅜㅜ 다음 명령어를 입력했습니다.sudo snap install certbot --classic sudo certbot --nginx ls로 확인해보니 따로 폴더가 생성되지 않았습니다.
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
pages 폴더의 기능과 폰으로 사이트를 보는 방법에 대해 질문드리겠습니다.
1. 이 강의와 같은 방법이 아니라create react app으로 리액트를 만들때는src 폴더 안에 만든 pages 폴더가 이 강의의 pages와 똑같이 작동을 하지 않는 것 같아요.어떻게 해야 이 강의의 pages와 똑같이 작동을 할까요? 2. 그리고 이 강의로 만든 사이트를 폰으로도 보고 싶은데 localhost밖에 안떠서 볼 수가 없어요, 무슨 방법이 없을까요?
- 해결됨[리뉴얼] React로 NodeBird SNS 만들기
안녕하세요 제로초님 npm run dev/yarn dev 시 궁금한게 있습니다.
수업 관련된 질문이 아닌 제 순전히 궁금증 입니다.next 관련 스터디 중에 팀원이 제안을 한 게 있었습니다.yarn dev나 npm run dev를 할 때 뜨는 url을 특정 페이지로 이동하게 변경할 수 있냐는 얘기였는데요저는 next를 공부하면서 저 명령어가 package.json 의 scripts 를 동작시킨다 정도만 이해한 상태이고요 $npm run dev나 $yarn dev 이후 이런식으로 url이 뜨면이 url을 제가 임의로 변경할 수 있나요? 예를 들어 처음부터 localhost:3000이 아니라 localhost:3000/auth이런식으로 특정 페이지의 url로 설정하는 건 가능한가요? (안 될 것 같은데 혹시나 여쭤봐요) port는 이미 켜져있는 port가 있으면 다른 port로 연계해주거나 그런건 많이 봐서 되는 것 같고 port 지정도 scripts에 명령어를 쓰면 간단히 될 것 같은데/auth 같은 건 라우팅 개념이라 안되는 건가요?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
logout 에러
이미지 업로드 multer까지 들은 상태입니다로그인부분 해결 강의 들을때 로그아웃이 안됐던거 같아서 여기부분인지 에러가 납니다로그아웃 에러때문인지 팔로잉 팔로워 닉네임이 잘못 표기되는듯 합니다 로그아웃 처리가 안되서 그런거 같아요 구글 콘솔창VS코드에서는 이상태에요POST /user/logout 401 6.494 ms - 29GET /user 200 2.692 ms - 4Executing (default): SELECT Post.*, User.`id` AS User.id, User.`nickname` AS User.nickname, Images.`id` AS Images.id, Images.`src` AS Images.src, Images.`createdAt` AS Images.createdAt, Images.`updatedAt` AS Images.updatedAt, Images.`PostId` AS Images.PostId, Comments.`id` AS Comments.id, Comments.`content` AS Comments.content, Comments.`createdAt` AS Comments.createdAt, Comments.`updatedAt` AS Comments.updatedAt, Comments.`UserId` AS Comments.UserId, Comments.`CommentId` AS Comments.CommentId, Comments.`PostId` AS Comments.PostId, Comments->User.`id` AS Comments.User.id, Comments->User.`nickname` AS Comments.User.nickname, Likers.`id` AS Likers.id, Likers->Like.`createdAt` AS Likers.Like.createdAt, Likers->Like.`updatedAt` AS Likers.Like.updatedAt, Likers->Like.`PostId` AS Likers.Like.PostId, Likers->Like.`UserId` AS Likers.Like.UserId FROM (SELECT Post.`id`, Post.`content`, Post.`createdAt`, Post.`updatedAt`, Post.`UserId`, Post.`RetweetId` FROM Posts AS Post ORDER BY Post.`createdAt` DESC LIMIT 10) AS Post LEFT OUTER JOIN Users AS User ON Post.`UserId` = User.`id` LEFT OUTER JOIN Images AS Images ON Post.`id` = Images.`PostId` LEFT OUTER JOIN Comments AS Comments ON Post.`id` = Comments.`PostId` LEFT OUTER JOIN Users AS Comments->User ON Comments.`UserId` = Comments->User.`id` LEFT OUTER JOIN ( Like AS Likers->Like INNER JOIN Users AS Likers ON Likers.`id` = Likers->Like.`UserId`) ON Post.`id` = Likers->Like.`PostId` ORDER BY Post.`createdAt` DESC, Comments.`createdAt` DESC;GET /posts 304 29.593 ms - -OPTIONS /user/login 204 0.482 ms - 0Executing (default): SELECT id, email, nickname, password, createdAt, updatedAt FROM Users AS User WHERE User.`email` = 'er@naver.com';Executing (default): SELECT User.`id`, User.`email`, User.`nickname`, User.`createdAt`, User.`updatedAt`, Posts.`id` AS Posts.id, Followings.`id` AS Followings.id, Followings->Follow.`createdAt` AS Followings.Follow.createdAt, Followings->Follow.`updatedAt` AS Followings.Follow.updatedAt, Followings->Follow.`FollowingId` AS Followings.Follow.FollowingId, Followings->Follow.`FollowerId` AS Followings.Follow.FollowerId, Followers.`id` AS Followers.id, Followers->Follow.`createdAt` AS Followers.Follow.createdAt, Followers->Follow.`updatedAt` AS Followers.Follow.updatedAt, Followers->Follow.`FollowingId` AS Followers.Follow.FollowingId, Followers->Follow.`FollowerId` AS Followers.Follow.FollowerId FROM Users AS User LEFT OUTER JOIN Posts AS Posts ON User.`id` = Posts.`UserId` LEFT OUTER JOIN ( Follow AS Followings->Follow INNER JOIN Users AS Followings ON Followings.`id` = Followings->Follow.`FollowingId`) ON User.`id` = Followings->Follow.`FollowerId` LEFT OUTER JOIN ( Follow AS Followers->Follow INNER JOIN Users AS Followers ON Followers.`id` = Followers->Follow.`FollowerId`) ON User.`id` = Followers->Follow.`FollowingId` WHERE User.`id` = 1;POST /user/login 200 354.583 ms - 432Executing (default): SELECT id, email, nickname, password, createdAt, updatedAt FROM Users AS User WHERE User.`id` = 1;Error: req#logout requires a callback functionat IncomingMessage.req.logout.req.logOut (C:\JS_workspace\React\js_prepare\back\node_modules\passport\lib\http\request.js:65:44)at C:\JS_workspace\React\js_prepare\back\routes\user.js:113:9at Layer.handle [as handle_request] (C:\JS_workspace\React\js_prepare\back\node_modules\express\lib\router\layer.js:95:5)at next (C:\JS_workspace\React\js_prepare\back\node_modules\express\lib\router\route.js:144:13)at exports.isLoggedIn (C:\JS_workspace\React\js_prepare\back\routes\middlewares.js:3:9)at Layer.handle [as handle_request] (C:\JS_workspace\React\js_prepare\back\node_modules\express\lib\router\layer.js:95:5)at next (C:\JS_workspace\React\js_prepare\back\node_modules\express\lib\router\route.js:144:13)at Route.dispatch (C:\JS_workspace\React\js_prepare\back\node_modules\express\lib\router\route.js:114:3)at Layer.handle [as handle_request] (C:\JS_workspace\React\js_prepare\back\node_modules\express\lib\router\layer.js:95:5)at C:\JS_workspace\React\js_prepare\back\node_modules\express\lib\router\index.js:284:15POST /user/logout 500 6.629 ms - 1374콘솔 네트워크창reduxback/routes/user.js로그아웃 부분 front/sagas/user.jsfront/reducers/user.js 프론트할땐 다 됐던걸로 기억하는데 백엔드에서 에러 발생한거 같긴한데 못찾겠어요 ㅠㅠ
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
lambda 함수 오류 질문드리겠습니다.
안녕하세요 제로초님 강의를 들으면서 lambda함수를 구현하여 이미지 업로드 테스트를 했습니다.근데 다음과 같이 로그이벤트를 확인해보니 AccessDenied 에러가 발생하면서 s3에 thumb폴더도 생기지 않았습니다.확실하지는 않지만 해당 문제에 대해서 구글링해보니 버킷권한과 관련된 에러인것같아서강의를 보면서 처음부터 실습하고, 오타도 확인해봤지만 방법을 찾지 못해 질문드립니다.바쁘시겠지만 해당 문제에 관해서 피드백해주시면 감사하겠습니다.참고자료도 함께 첨부하겠습니다. /lambda/index.jsconst AWS = require('aws-sdk'); const sharp = require('sharp'); const s3 = new AWS.S3(); exports.handler = async (event, context, callback) => { const Bucket = event.Records[0].s3.bucket.name; // react-nodebird-s3 const Key = decodeURIComponent(event.Records[0].s3.object.key); // original/12312312_abc.png console.log(Bucket, Key); const filename = Key.split('/')[Key.split('/').length - 1]; const ext = Key.split('.')[Key.split('.').length - 1].toLowerCase(); const requiredFormat = ext === 'jpg' ? 'jpeg' : ext; console.log('filename', filename, 'ext', ext); try { const s3Object = await s3.getObject({ Bucket, Key }).promise(); console.log('original', s3Object.Body.length); const resizedImage = await sharp(s3Object.Body) .resize(400, 400, { fit: 'inside' }) .toFormat(requiredFormat) .toBuffer(); await s3.putObject({ Bucket, Key: `thumb/${filename}`, Body: resizedImage, }).promise(); console.log('put', resizedImage.length); return callback(null, `thumb/${filename}`); } catch (error) { console.error(error) return callback(error); } } 개발자도구를 확인했을때는 특별한 오류가 발생되지 않습니다.
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
비동기 통신 했을때 로딩 관련 질문
안녕하세요 ?잘 듣고 잘 마무리 중입니다. 작업중 하나 궁금한게 생겼는데코멘트의 경우 하나의 포스트에서 입력이 되는건데 addCommentLoading 같은 상태를 redux를 이용해 전역으로 관리 하면1 이라는 포스트에 댓글을 달게 되면2 라는 포스트의 댓글 입력 버튼도 로딩으로 변하게 되는게 당연한 거라고 생각하는데요 (2 포스트 뿐만이 아니라 모든 댓글 입력버튼이 로딩이 되겠죠)이를 각 포스트 댓글 버튼만 로딩으로 변경하고 싶으면 useState를 사용해서 로딩을 각각 잡아주는게 최선일까요 ?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
drop table 후 질문드리겠습니다.
안녕하세요 제로초님 강의 잘듣고있습니다.배포는 처음이라 해당강의를 들으면서 무작정 따라하면서 실습을 하고 있습니다.근데 제가 모르고 drop table까지 따라해서 database가 삭제됬습니다.그래서 우분투 back으로 간 뒤 다시 db를 생성했습니다.근데 db는 정상적으로 생성이 됬는데 테이블을 검색해보면 다음과 같이 Empty set이 출력이 되더라고요이러한 경우에는 다시 인스턴스를 생성해야될까요? ㅜㅜ mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | recipe.io | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use recipe.io; Database changed mysql> show tables; Empty set (0.00 sec) mysql>
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
조인한 테이블에서 데이터 꺼내오기 질문
안녕하세요 선생님. 현재 유저 프로필의 이미지를 불러오는데에 어려움을 겪고 있습니다...ㅠ 유저 정보는 유저 리듀서의 info안에 들어있으니 쉽게 꺼냈는데,유저 Image는 다른 테이블(Images 테이블)에 들어있어서 어떻게 해당 아이디의 image의 src를 꺼내올 수 있는지 모르겠습니다.. <img src={`http://localhost:3065/${me.Images[0].src}`} />저는 이렇게 가져오면 되지 않을까 싶었는데me는 useSelector로 가져왔고,리액트 노드버드에서 게시글 이미지를 조인된 테이블에서 `http://localhost:3065/${images[0].src}`이렇게 가져오길래(노드버드에서는 부모 컴포넌트에서 부터 props로 전달해서 준 것을 알지만 맥락이 제 코드와 비슷하다고 생각했습니다.) 하지만 리액트 노드버드에서는 게시글 이미지를 불러올 때 map의 키값으로 각각의 post의 id를 알 수 있지만 저는 바로 me를 불러오는데...어떻게 해야할지 감을 잡을 수 없어 질문 드립니다.ㅠ조언 부탁드립니다 선생님.
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
useCallback, useMemo의 deps 기준에 대해서 질문드립니다.
Todo리스트를 만들어보았습니다..useCallback이나 useMemo는state를 기점으로 deps를 정의하는게 옳은것일까요?
- 미해결[리뉴얼] React로 NodeBird SNS 만들기
서버 실행시 404에러 관련해서 질문드리겠습니다.
안녕하세요. 제로초님 강의 잘 듣고있습니다.실습을 진행하고 서버를 실행하니 다음과 같이 404에러가 발생해서 해결해보려고 했는데 방법을 찾지 못해 질문드리겠습니다.우선 해당 강의를 들으면서 db생성, vim 에디터로 수정, 서버 실행 전부 정상적으로 동작합니다.하지만 서버를 실행 후 퍼블릭ipv4주소를 접속하면 다음과 같이 에러가 발생하고 있습니다.해당 문제에 관해서 피드백 부탁드리겠습니다.관련 자료 함께 첨부하겠습니다.