묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
[공유] next 13 버전 Link 태그 속 a 링크 오류
Error: Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>. Learn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchornext 13 버전 이후로부터는 Link 태그 속에 a 태그 넣지 않아야 정상 작동 합니다. 만약 꼭 Link 속에 a 태그를 넣어야 한다 (예시, 이전 버전 코드를 13으로 변경하는데 class 속성 등이 a 태그에 있다) link 에 legacyBehavior 넣으면 됩니다.<Link href="/" legacyBehavior> <a className="... code"> </a> </Link>
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
[공유] 개인 서버에서 reverse-proxy 적용시 next dev 설정
제목 내용 그대로 서버에서 reverse-proxy 적용시 next dev 실행에 관한 내용입니다. 아래 링크 참고 하시면 됩니다. (https://itnext.io/one-domain-multiple-next-js-apps-5e39b0ffa1bf)package.json이 있는 위치에 next.config.js 파일 만들고module.exports = { assetPrefix: "/npm", };+) 추가 사항 : 혹시 개인 서버에서 https 적용 중이시면, hmr에서 "WebSocket is closed before the connection is established" 오류 발생합니다. (https://github.com/vercel/next.js/issues/31139) 에서 해답을 찾기는 했는데... 네트워크 탭 보면 이미 wws:// 로 요청이 가서 왜 해결이 되는지는 모르겠지만, hmr 잘 작동됩니다.module.exports = { assetPrefix: "https://{서버 도메인 주소}/npm", } 참고로 nginx reverse-proxy 설정 입니다location /npm/ { proxy_pass http://localhost:8084/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Accept-Encoding gzip; }
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
useSWR 사용시 타입 지정
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 커뮤니티 정보가져오는 useSWR에서는 다른 곳처럼 타입지정을 따로안했는데 원래는 [slug].tsx 에서 사용한 useSWR처럼 타입지정을 해줘야하나요??
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
upload에서 제출 시 오류
upload에서 제목과 내용을 작성하여 제출하면 이런 오류가 뜨면서 제출이 안되는 것 같습니다. // client에서 보낸 api 요청을 받는 코드app.post("/api/post/submit", (req, res) => {// client에서 보낸 body 값을 temp 변수에 지정let temp = req.body;// Counter 콜렉션에서 name: "counter"인 애들을 찾아서 temp 변수를 통해서 posts 모델의 postNum에 집어넣어준다.Counter.find({ name: "counter" }) .exec() .then((counter) => {temp.postNum = counter.postNum;console.log(temp);// new 명령어를 통해서 Model안에 들어갈 데이터를 정의해준다.// save 명령어를 통해서 저장const CommunityPost = new Post(temp);CommunityPost.save().then(() => {// 몽고 디비에서 하나의 다큐먼트를 업데이트 하는 명령어 , 두개의 query를 받는다 첫번째 쿼리는 어떤 다큐먼트를 업데이트 시킬지, 두번째는 어떻게 업데이트 시킬지// query문에서 증가시키는 코드는 $inc를 통해 가능하다.Counter.updateOne({ name: "counter" }, { $inc: { postNum: 1 } }).then( () => {res.status(200).json({ success: true }); } ); }); }) .catch(() => {res.status(400).json({ success: false }); });});
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
배포하고 난 후에 일기저장
안녕하세요 !배포를 완료하고 일기를 작성은 잘 되는데, 제가 쓴 일기는 제 노트북에서 배포주소로 잘 보입니다.배포한것을 다른사람들에게 전달했을 시, 다른사람들이 쓴 일기는 제가 배포한 주소로 제 노트북에서 볼 수 없나요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
cookie 완전히 제거 하는법
로그아웃을 했을때 브라우저에서 쿠키를 완전히 제거하는 코드를 구현했습니다 그런데 페이지 이동을 하는게 아니면 같은 페이지에선 새로고침을 하면 계속 connect.sid에 쿠키가 남아있는데 완전히 없애는 방법 없는지 여쭤보고 싶습니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
백엔드 수업 부분
안녕하세요 백엔드 수업 부분은실습이 불가하다고 하는데,따로 vscode 사용없이강의만 수강해도 괜찮은건가요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
강의에 나오는 문법이 적용되지 않습니다
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 }); }); }); }); });
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
스크롤때문에 데이터 불러오는거
스크롤때문에 무한으로 데이터 요청 보내는거 작업, 게시글 좋아요 강의 편에서 한다고 했는데 돌려봐도 스크롤 데이터 요청막는거 안보여서요 아직 구현 안한건가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
run dev 오류
notion에 있는 '수업 프로젝트 설치할 것' 이후 yarn dev를 해보면 다음과 같이 Can't resolve '@styles.Home.module.css'가 뜹니다. _app.js에 있는 import문도 삭제하였는데, 해당 문제가 해결되지 않아 qqq폴더 안에 index.js도 실행이 되지 않습니다..! 혹시 어떻게 해결 가능할까요? 실행 위치는 codecamp, class, qqq 모두 해보았는데 같은 오류가 발생합니다! ㅠㅠ + import styles from ~~부분을 주석처리하고, return 안의 내용을 삭제시키니 동작하는데 삭제시켜둔 상태로 강의를 진행해도 괜찮나요?
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
응답 강의중 질문입니다
Pdf 파일에 "204:내용없음, DELETE"라고 되어 있어 질문이 생겼습니다.204는 삭제요청을 했는데 내용 없을때 리턴해주는 상태 코드인건가요?? Get요청을 했는데 없을시에도 204를 리턴해 주어도 될까요?3xx 잘가~ 는 어떤 의미로 받아들여야 할지...이해가 가지 않습니다...
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
요청 형식 강의 질문입니다
HTTP경로로 자원을 식별한다고 알려주셨는데! lecture?user={id} 와 같은 식으로는 사용하지 않는건가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
apollo-client의 사용 및 _app.js 작동원리
example 주소 : http://practice.codebootcamp.co.kr/graphql이 주소가이렇게 떠서포트폴리오용 주소 : http://backendonline.codebootcamp.co.kr/graphql이주소를 uri에 넣었고이렇게 실행해봤더니이렇게 뜨네요버튼을 눌러도 네트워크에 뜨지 않습니다뭐가 문제일까요?..
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
비동기 세계1 강의 내용 질문입니다
노드는 기본적으로 비동기로 동작한다라는 텍스트가 있는데! console.log()를 출력해보면 동기로 동작하는걸 볼 수 있습니다....기본적으로 위에서 아래로 동기로 동작하는데 비동기로 동작하는 함수가 많다는 의미의 텍스트 일까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
redux saga를 사용한 비동기 통신 질문
안녕하세요 강사님, 비동기 통신 관련해서 질문이 있습니다.상세페이지를 만들면서 map 돌린 것 중 어떤 아이템을 클릭하면 아이템의 이름을 url 주소에 넣고, 그걸 매개변수로 데이터를 가져오려고 합니다.그래서 api를 result를 매개변수로 아래와 같이 만들고 saga도 만들었습니다.getWordArt: (result) => localApi.get("/api/markets/search?text=" + result),function* loadSearchArt(action) { try { const result = yield call(ArtApi.getWordArt()); yield put({ type: SEARCHART_SUCCESS, data: result.data, }); } catch (err) { yield put({ type: SEARCHART_FAILURE, error: err.response.data, }); }}function* watchLoadSearchArt() { yield takeLatest(SEARCHART_REQUEST, loadSearchArt);}export default function* ArtSaga() { yield all([ fork(watchLoadSearchArt), ]);}그리고 useParams로 result를 가져와서 아래처럼 getWordArt에 매개변수로 넣었습니다.const { result } = useParams(); useEffect(() => { ArtApi.getWordArt(result) .then((res) => { setSearchArt(res.data.data.markets); }) .catch((err) => { throw new Error(err); }); }, [result]);데이터는 잘 가져오는데 이 코드를 dispatch를 사용해서 아래처럼 수정하고 싶은데 어떻게 하면 좋을지 잘 모르겠어서 질문합니다. useEffect(() => { dispatch({ type: SEARCHART_REQUEST, }); }, [dispatch]);저런 코드에 result를 여기저기 넣어봤는데 데이터를 못 가져옵니다ㅜㅜ아래에 reducer도 같이 첨부합니다.const initialState = {searchArt: [], searchArtLoading: false, searchArtDone: false, searchArtError: null}export const SALEART_REQUEST = "SALEART_REQUEST";export const SALEART_SUCCESS = "SALEART_SUCCESS";export const SALEART_FAILURE = "SALEART_FAILURE"; const ArtReducer = (state = initialState, action) => { return produce(state, (draft) => { switch (action.type) { case SEARCHART_REQUEST: draft.searchArtLoading = true; draft.searchArtDone = false; draft.searchArtError = null; break; case SEARCHART_SUCCESS: draft.searchArtLoading = false; draft.searchArtDone = true; draft.searchArt = action.data.data; break; case SEARCHART_FAILURE: draft.searchArtLoading = false; draft.searchArtDone = true; draft.searchArtError = action.data.error; break; default: return; } });};
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
callback
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1. 여기서 쓰인 callback 함수의 의미는 어떻게 될까요?? 간단하게 return으로 이해하면 될까요??next()가 없어도 다음 핸들러로 넘어가는 건가요??callback에서 첫번째 인자는 에러를 뜻하고, 두번째 인자는 위에 사진처럼하나는 filename이고하나는 acceptFile: boolean 을 뜻하는데그저 multer의 형식이라고 생각하면 될까요?? 그리고 upload =multer 저 부분이 실행되고 다음 핸들러인 uploadSubImage에서는 이미 파일이 업로드가 된 상태라고 했는데 그럼 upload= multer가 uploadSubImage로 request로 file정보를 보낸건가요?? 로그를 찍어보니까 req는 ownSub에서는 undefined였는데 uploadSubImage에서 생기더라구요...
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
../ 을 통한 상위 폴더로의 이동없이 어떻게 <img src="images/icons/logo.png />만으로 사진을 불러오신건가요
../ 을 통한 상위 폴더로의 이동없이 어떻게 <img src="images/icons/logo.png />만으로 사진을 불러오신건가요?제가 앞에 ../을 붙이지 않았을 경우에는 그림이 제대로 불러와지지 않습니다<img src="../images/icons/logo.png />를 해야만 정상적으로 사진이 불러와 집니다
-
해결됨탄탄한 백엔드 NestJS, 기초부터 심화까지
[2023.03.04 기준] 프론트앤드 빌드 방법 정리
해당 강의 프론트앤드 빌드 방법 정리합니다.강의 그대로 따라할 시에 제가 구성한 환경에서는 에러가 지속적으로 발생했습니다.에러 정보: Error: error:0308010C:digital envelope routines::unsupported환경 정보OS: MacOS Ventura 13.3 베타npm, npx version: 9.5.0node version: v18.14.2이에 따른 해결 방법 정리해봅니다. :)강의에 있는 git 프로젝트를 clone 한다.frontenddev 폴더 접근package.json 파일을 아래와 같이 작성 (dependencies 에서 antd 는 4.24.0 버전, 그 외는 2023.03.04 기준으로 최신 버전입니다. )frontenddev 폴더에서 sudo npx @next/codemod new-link . 을 실행한다.components/layouts/AccountForm.tsx 파일에서 <Link href="/signup"> 을 <Link href="/signup" legacyBehavior> 으로 변경Error: Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>. 해결하기 위함입니다.참고 블로그: https://steady-learner.tistory.com/entry/Nextjs-Error-Invalid-Link-with-a-child-Please-remove-a-or-use-Link-legacyBehavior-%EC%98%A4%EB%A5%98npm i 후 npm run dev 하면 실행 됨을 확인할 수 있습니다.
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
webstorm과 vscode
강의에서는 webstorm이 사용되던데,vscode로 강의를 따라가는데 어려움이 없을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
오류 해결에 도움이 필요합니다.
시퀄라이즈 sync 부분 강의까지 들었습니다. port는 3306번을 다른게 차지하고 있어서 3307을 사용했습니다. node app.js 했는데 실행이 안되네요.. 오류를 파일 부분을 찾아보려했는데 다 모듈 관련된 부분인거 같아서 어디를 봐야 할지 막혔습니다. 워크벤치도 연결이 안되는 상황입니다. 서버 실행 중ConnectionRefusedError [SequelizeConnectionRefusedError]: connect ECONNREFUSED 127.0.0.1:3307 at ConnectionManager.connect (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async ConnectionManager._connect (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:220:24) at async /Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:174:32 at async ConnectionManager.getConnection (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:197:7) at async /Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/sequelize.js:304:26 at async MySQLQueryInterface.tableExists (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/query-interface.js:102:17) at async Function.sync (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/model.js:939:21) at async Sequelize.sync (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/sequelize.js:376:9) { parent: Error: connect ECONNREFUSED 127.0.0.1:3307 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) { errno: -61, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 3307, fatal: true }, original: Error: connect ECONNREFUSED 127.0.0.1:3307 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) { errno: -61, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 3307, fatal: true }}