묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
section 26 portfolio 작성 중, 오류
안녕하세요! section 26 포트폴리오 수행중, Invariant Violation이라는 에러가 떠서 이렇게 질문 드립니다.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
페이지에 site맵 존재시 next Link는 csr 처럼 싹가져오게 되나요?
next Link를 이용하게 되면 해당 페이지에서 링크 페이지의 js를 미리 불러온다는 내용이 강의에 존재하였는데헤더나 푸터등 모든페이지에 공용으로 들어가는 영역에 site맵 존재하고 모든 링크를 걸어 놓게 된다면 모든 페이지가 미리 js 형태로 불러와 지게 되는건가요?해당 경우에는 next의 강점이 많이 무뎌질거 같아 질문합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
리엑트 gql 백틱
04-04-graphql-mutation-input 파트에서gql세팅에서 백틱을 사용하는데 백틱 내부 내용이 저는 문자열 처리되어서 강의와 같이 문자열이 아닌 함수 형태로 만들 수 있는 플러그인이 무엇일까요?동작은 똑같이 동작하기는 합니다
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
클래스 방식말고
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 설명해주신 싱글톤? 방식말고 평소에 사용하는 방식으로 바꿔봤는데 맞는지 검사가능할까요??hello.ts import { NextApiRequest, NextApiResponse } from 'next'; const admin = require('../../model/firebase_admin'); export default function handler(_: NextApiRequest, res: NextApiResponse) { const db = admin.firestore(); db.collection('test'); res.status(200).json({ name: 'John Doe' }); }modle/firebase_admin.tsconst admin = require('firebase-admin'); interface Config { credentials: { privateKey: string; clientEmail: string; projectId: string; }; } if (!admin.apps.length) { const config: Config = { credentials: { projectId: process.env.projectId || '', clientEmail: process.env.clientEmail || '', privateKey: process.env.privateKey?.replace(/\\n/g, '\n') || '', }, }; admin.initializeApp({ credential: admin.credential.cert(config.credentials), }); console.info('bootstrap firebase admin'); } module.exports = admin;현재 firestore만 hello.ts에서 test 보내는 방식만 따라해봤습니다! 질문 1. 이 방식으로 사용해도 될까요??이 방식으로 문제될게 있을까요?질문 2. 아래 코드가 출력이 안되는데 이유가 있을까요?console.info('bootstrap firebase admin');위 전체코드에서처럼 if문안에 작성하게되면 콘솔이 영상처럼 터미널에 안뜨는데 왜그런걸까요?if문 밖에 선언하면 잘 출력됩니다.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
Failed to load resource: the server responded with a status of 404 ()
안녕하세요! nextjs 실습중입니다. next/Image를 사용해서 이미지를 띄웠는데, dev 환경에서는 이미지가 잘 떴는데, 실제로 배포하니까 에러가 나면서 이미지가 안뜨네요 아무리 구글링 해봐도 모르겠어서 질문 드립니다ㅜㅜ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
section 26 강의 중, createProductInput error 발생
안녕하세요, section 26 수업을 따라가던 도중, 이러한 error가 발생하였습니다. error message를 확인해보면, CreateProductInput에 문제가 있는 것 같은데 해결하기가 어려워 질문을 남깁니다 !
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
VSCode 익스텐션 궁금합니다.
수업 잘듣고 있습니다. 수업 외적으로 VSCode 에서 코딩 중에 회색으로 코드 힌트가 들어가 있던데요. 어떤 익스텐션인지 알려 주실 수 있을까요?검색 중인데 못찾겠네요.죄송하지만 도움을 주셨으면 감사하겠습니다.좋은 주말되세요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
props 첫 번째 줄에 입력할 시 생기는 오류에 대해.
안녕하세요 선생님 !props를 잘 쓰다가, return문 첫 번째 줄에 넣었는데 두 번쨰 이미지처럼 에러가 뜨더라구요 . 근데 첫 번째 이미지처럼 위에 부모 태그를 달아주면 괜찮아지던데 이유가 혹시 뭔지 알 수 있을까요 ??
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
툴킷으로 만들어보는중 막히는부분 질문드립니다.
리덕스, 사가를 사용할때는 리덕스 -> 사가 -> 리덕스 순으로 값이 전해져서 게시글을 추가할때마다 게시글 개수가 올라가는 흐름을 툴킷을 적용해서 하려고 하니깐 막혀서 어떻게 해야할지 질문드립니다. 코드는 다음과 같이 post.ts // post.ts export const addPostAction = createAsyncThunk('/post', async (data: string) => { const addPost = dummyPost(data); await delay(1000); return addPost; }); // 게시글 삭제 export const removePostAction = createAsyncThunk( '/post/delete', async (data: string) => { await delay(1000); return data; } ); // 게시글 추가 .addCase(addPostAction.pending, (draft) => { draft.addPostLoading = true; draft.addPostDone = false; draft.addPostError = null; }) .addCase(addPostAction.fulfilled, (draft, action) => { draft.addPostLoading = false; draft.addPostDone = true; draft.mainPosts.unshift(action.payload); }) .addCase(addPostAction.rejected, (draft, action) => { draft.addPostLoading = false; draft.addPostError = action.error.message; }) // 게시글 삭제 .addCase(removePostAction.pending, (draft) => { draft.removePostLoading = true; draft.removePostDone = false; draft.removePostError = null; }) .addCase(removePostAction.fulfilled, (draft, action) => { draft.removePostLoading = false; draft.removePostDone = true; draft.mainPosts = draft.mainPosts.filter( (v) => v.id !== action.payload ); }) .addCase(removePostAction.rejected, (draft, action) => { draft.removePostLoading = false; draft.removePostError = action.error.message; }) user.ts // user.ts const dummyUser = (data: LoginData): DummyData => ({ ...data, nickname: '제로초', id: 1, Posts: [{ id: 1 }], Followings: [ { id: 2, nickname: '김' }, { id: 3, nickname: '이' }, { id: 4, nickname: '박' }, ], Followers: [{ nickname: '김' }, { nickname: '박' }, { nickname: '이' }], }); const userSlice = createSlice({ name: 'user', initialState, reducers: { addPostTome(draft, action) { draft.me?.Posts.unshift({ id: action.payload }); }, removePostOfMe(draft, action) { if (draft.me) { draft.me.Posts = draft.me?.Posts.filter((v) => v.id !== action.payload); console.log(draft.me); } }, }, 로 구분을 했고 게시글 추가, 삭제는 정상적으로 작동하는데 이때 user.ts의 dummyUser 값을 어떻게 변경해줘야 할지를 잘 모르겠어서 질문드립니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
백엔드와 데이터베이스 연결하기 부분 pdf 관련 질문 있어요
일단...여러가지 배포 오류가 많이떠서 거의 2주간 배포에 시간 썼는데 여찌저찌 배포가 되긴 했어요..!이번엔 질문이 좀 많아요..ㅎ서버 api와 통신은 제대로 잘 되는데 자꾸 웹소켓 오류가 뜨는데 이거 무시해도 괜찮은 건가요?서비스 동작하는데는 문제 없는 것 같은데 이런 오류가 계속 떠요.백엔드와 데이터베이스 연결 pdf 파일 내용은 영상으로 안다뤄 주신거죠? 제가 도커쪽과 배포쪽은 정말 아예 처음 써보는거라 지식이 많이 부족한데, 제가 영상보고 이해하기로는 현재 ec2에서 깃 클론으로 모든 client와 server소스코드와 도커 컴포즈 파일까지 가져와서 거기서 pm2로 클라이언트랑 서버 모두 백그라운드로 실행하는 것으로 이해했거든요. 2-1. 왜 도커 파일을 client와 server에 각각 만들어줘서 도커컴포즈로 이미지 생성하도록 만드는건지 이해를 못했어요. 도커 파일에는 여러 패키지 설치하는 명령어(?)와 client를 실행시키는 명령어가 있던데 이 과정이 왜 필요한건지 이해를 못했습니다.ㅠㅠ 사실 저는 '백엔드와 데이터베이스 연결하기'라는 pdf에 있는 도커 파일로 변경했을때 배포 실패했다가 도커파일 싹 다 지우고 decker-compose.yml파일을 원래 기존 로컬에서 작성했던대로 냅두고, data-source.ts 파일의 host 부분도 그냥 "localhost"로 놔둔채 배포에 성공했거든요.그래서 저 pdf 파일대로 client와 server에 도커파일을 만들고 도커 컴포즈 파일까지 변경한 후 도커 컴포즈 명령어 실행했을 때와 도커파일 없이 기존의 도커컴포즈 파일대로 배포했을 때와는 어떤 부분이 다른건지 궁금합니다. ec2 인스턴스에서 깃 클론으로 가져온 client를 다시 npm run build:production하는 빌드과정을 보여주셨는데, 어짜피 pm2로 ecosystem.config파일을 백그라운드로 실행시킬거면 (이 파일에서 script: "npm run start:production"라는 명령어를 실행하도록 설정해줬으므로) client의 빌드 폴더 만드는 과정이 필요 없는거 아닌지요? (무지한 소리면 죄송합니다..ㅠ) 마지막으로, 인스턴스를 종료하고 컴퓨터를 끄더라도 도커가 종료되지 않고 계속 동작하는 것 같더라고요. 로그인 로그아웃이 동작하고 유효한 토큰인지 확인하는 api도 잘 동작했어요. 제가 생각했을 떄는 pm2로 서버와 클라이언트는 백그라운드로 실행시켰지만 도커는 포어그라운드로 동작시켜서 인스턴스 종료하면 데이터베이스와는 연결이 끊겨 제대로 동작을 안할 것이라 생각했는데 예상과는 달리 잘 동작하더라고요. 이건 도커의 특징인건지, 아니면 저희가 작성한 파일에 백그라운드로 동작하도록 하는 설정이 포함되어 있는건지.. 알려주시면 감사하겠습니다.질문이 길고 갯수가 많은데 답변 기다리겠습니다..! 감사합니다.
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
getStaticProps 두개의 질문있습니다
1.getStaticProps를 about 페이지에 사용하셨는데빌드를 하고 나서 유저의 게시글 개수 팔로우 개수 팔로워 개수가 바뀔 수 있잖아요?근데 getStaticProps를 사용했고빌드시 html로 만들어 저장하고 그 html을 브라우저로 전달하기 때문에DB의 데이터가 바뀌어도브라우저 화면의 about페이지에는 빌드시의 html이 보여지게 되서 데이터 갱신이 안되는데 맞나요?? 2.그리고 html로 바뀌는 대상이 about페이지라면about컴포넌트의 자식 AppLayout의 자식 UserProfile 컴포넌트에는 동적인 데이터가 쓰이기 때문에 말이 안되는 것 같은데 html로 바뀌는 대상이 정확히 뭔지 알 수 있을까요??
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
ant icon 질문있습니다
import { GithubOutlined } from "@ant-design/icons"; import styled from "@emotion/styled"; import { useRouter } from "next/router"; const Wrapper = styled.div` height: 80px; padding: 0px 50px; display: flex; flex-direction: row; justify-content: space-between; align-items: center; background-color: #fff4f4; `; const LoginWrapper = styled.div` display: flex; flex-direction: row; `; const LoginBtn = styled.button` width: 100px; height: 40px; background-color: orange; border: 2px solid orange; border-radius: 10px; font-size: 16px; color: white; cursor: pointer; `; const SignBtn = styled.button` width: 100px; height: 40px; background-color: orange; border: 2px solid orange; margin-left: 10px; border-radius: 10px; font-size: 16px; color: white; cursor: pointer; `; export default function LayoutHeader(): JSX.Element { const router = useRouter(); const onClickLogo = (): void => { void router.push("/boards/page"); }; const onClickLogin = (): void => { void router.push("/boards/login"); }; const onClickSign = (): void => { void router.push("/boards/sign"); }; return ( <Wrapper> <GithubOutlined style={{ fontSize: "50px" }} onClick={onClickLogo} /> <LoginWrapper> <LoginBtn onClick={onClickLogin}>로그인</LoginBtn> <SignBtn onClick={onClickSign}>회원가입</SignBtn> </LoginWrapper> </Wrapper> ); }다음과 같이 코드를 작성했을때 다음과 같은 에러 메시지가 나오는데 rev 에 어떤 속성을 줘야되나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
버전 관리에 대한 궁금증이 있습니다.
react가 18버전으로 업그레이드 되었지만 실무에서는 안전한 17버전을 쓰고 next는 12.1.0 버전 react는 17.0.2 버전을 쓴다고 하셨는데, 이러한 정보들은 어디서 얻을 수 있나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
비밀번호 수정 기능에 관해 궁금한 점이 있습니다.
마이페이지에서 비밀번호 수정 기능을 구현 중에 있습니다.현재 비밀번호와 새로운 비밀번호를 입력하고 뮤테이션을 날릴 때에는 새로운 비밀번호만 넣어서 저장을 하는 것으로 이해를 했습니다. 기존 비밀번호의 체크는 백엔드에서 이루어지는 과정이 따로 없는 것 같아서요. 제가 가볍게 생각해보기로는 loginUser api를 활용해서 체크를 해야하나 싶은데요, 현재 비밀번호 체크 로직이 이 과정에서 구현 가능한지 아니면 추가로 다른 기능이 있어야 가능한건지 궁금합니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
파일 이동을 윈도우에서 사용법도 알고 싶습니다
우분투와 맥북 기준 말고윈도우에서는Alt -alt shift -이 두가지를 어떻게 사용 하나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
fetchPointTransactionsOfBuying API에서 특정 정보만 불러와지지 않습니다.
안녕하세요 강사님.마이페이지 내 포인트 화면의 구매내역 조회기능을 구현 중에 있습니다.fetchPointTransactionsOfBuying API로 구매내역을 조회하는데 판매자의 이름이 불러와지지 않습니다.. const FETCH_POINT_TRANSACTIONS_OF_BUYING = gql` query fetchPointTransactionsOfBuying($search: String, $page: Int) { fetchPointTransactionsOfBuying(search: $search, page: $page) { _id impUid amount balance status statusDetail useditem { _id name price seller { _id # name # email } buyer { _id name email } soldAt } createdAt } } `;useditem.seller._id까지는 조회가 되는데 name과 email은 조회가 되지않습니다.혹시나 해서 buyer 정보를 불러왔는데 buyer도 _id만 조회가 되고 name과 email는 조회가 되지 않습니다.위와 같은 오류가 나오는데 제가 모르는 부분이 있는건지 데이터에 문제가 있는건지 잘 모르겠습니다.. !
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
서버 배포 후 생기는 보안오류 문제
이렇게 pm2로 client, server를 둘다 실행 시켰고, 맨 처음 client만 실행했을 때는 포트 80번이 3000번으로 잘 우회되어 보여졌는데 서버 실행 부분을 따라하면서 pm2로 서버를 실행시킨 후 부터 보안오류가 떠서 사이트 접근이 막혔습니다..이러한 보안 오류가 떴습니다. 이후, EC2 인스턴스 퍼블릭 IPv4 DNS주소로 들어가기만 하면 저런 경고 사이트가 뜹니다.ㅠㅠ어떻게 해결할 수 있을까요?..아래에 작성한 코드 첨부 했습니다. server package.json 파일의 scripts 부분 코드 입니다. "scripts": { "start": "ts-node src/server.ts", "start:production": "env-cmd -f .env.production ts-node ./src/server.ts", "dev": "env-cmd -f .env.development nodemon --exec ts-node ./src/server.ts", "test": "echo \"Error: no test specified\" && exit 1", "typeorm": "typeorm-ts-node-commonjs" }, server의 .env.production 파일입니다. (token시크릿 키는 제외시킨 부분)PORT=4000 NODE_ENV=production APP_URL=http://ec2-54-81-196-163.compute-1.amazonaws.com:4000 ORIGIN=http://ec2-54-81-196-163.compute-1.amazonaws.com 추가적으로, pdf 파일에는 백엔드 서버 실행 다음 부분에 백엔드 서버와 데이터 베이스 도커를 통해 연결하기 파트가 있던데 해당 부분은 영상 제작에서 제외시키신 건가요? 아니면 배포 영상 쪽 말고 다른 영상에서 찍으신거면 어떤 영상에서 확인 가능한지 알려주시면 감사하겠습니다..!
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
상태관리 질문 있습니다!
안녕하세요 용주님swr 대신에 React-query랑 Recoil로 상태관리를 하고 있는데, map에 대한 data를 setMapInfo에 저장하고 있고, Markers에서 mapInfo에 대한 값을 useRecoilValue로 가져오고 있는 상황입니다. const [mapInfo, setMapInfo] = useRecoilState(mapState) const initializeMap = () => { const mapOptions = { center: new window.naver.maps.LatLng(...initialCenter), zoom: initialZoom, minZoom: 9, scaleContorl: false, mapDataControl: false, logoControlOptions: { position: naver.maps.Position.BOTTOM_LEFT, }, } let map = new window.naver.maps.Map(mapId, mapOptions) mapRef.current = map setMapInfo(map) } 그런데 계속 아래와 같이 Type error가 발생하고 있는 상황입니다. 어떤 문제 때문에 발생하는지 알 수 있을까요? 수업과 무관한 질문이여서 죄송합니다! ㅜ참고로 @types/navermaps : 3.6.5 버전입니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
회원가입 과제
infor_box를 css에서 인식?을 못하는데 html 어디에 문제가 있는걸까요?ㅠㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
husky 설치과정을 잘 모르겠습니다
영상에 나오는 것 처럼 따라하게 되면 npx husky install 부분에서 다음과 같은 오류가 나오게 되고 자료 집에 주신것처럼 husky ver4로 할 때 package.json 설정한 후에 어떻게 해야 될지 잘 모르겠습니다