묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
section 29 수업과 관련해서 질문드립니다!
안녕하세요 선생님. 재접속시 column이 삭제되는 문제는 버전을 낮추니 해결되었습니다! 다만 app.module.ts 에서 @Module decorator 설정 중 entities: [] 부분에 glob path 설정이 안돼서 버전과 관련된 것인지 궁금해서 질문드립니다!( glob path만 입력했을 때 entity를 읽지 못해 직접 입력해주니 해결되었습니다)( 아직 실력이 부족해 질문이 상세하지 못한 점 양해 부탁드립니다. )
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
데이터 수정에 관하여
수업에서는 product 테이블을 생성할 때 연관된 테이블의 데이터도 한번에 만들 수 있도록 구현하였습니다.그렇다면 데이터 수정도 product의 mutation 요청으로 연관 테이블들의 데이터도 모두 수정할 수 있도록 구현해야 하나요?이렇게 하려니 product 업데이트를 위해 입력해야 하는 데이터가 너무 많아지고 연관된 테이블의 데이터를 수정하는 경우에 create처럼 연관된 테이블의 컬럼의 데이터를 하나하나 다시 다 지정해줘야 하는 불편함도 있습니다.이렇게 한방에 처리하는거 말고 일단 product update mutation에는 product의 본래 컬럼들만 수정할 수 있도록 처리하고 연관된 테이블의 데이터는 연관 테이블의 기본키로 해당 테이블들의 update mutation으로 처리해도 될까요? 일단은 연관된 테이블의 기본키를 product의 fetchProduct로 조회하고 찾은 키를 이용해서 연관 테이블의 데이터를 수정하는 방식입니다.어떤 구조가 올바른 방식일까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
docker-compose 후 데이터 전송 시 에러에 대해서...
먼저 각 폴더의 경로입니다. 해당 코드는 몽고디비 경로입니다.야믈파일에서의 코드입니다. docker-compose up 을 하고 데이터를 전송 했을 때의 에러입니다.(바디 안에 phone의 값은 스크린샷으로 인해 지운 부분입니다.) docker-compse를 하지 않은 상태에서의 데이터 전송 메세지입니다.도커화 시키기 전에 바로 내 컴퓨터에서는 잘 전송이 되어지는데 docker-compose했을 때에 에러가 발생을 합니다.위에는 docker-compose up명령어를 작동 시켰을때 나오는 메세지들인데 해당 건에서는 에러메세지라고 보일 만한 것들을 찾지 못하였습니다.처음에는 몽고디비 경로를 잘못 설정 한 것 같아서 강의를 다시 보고 야믈파일에서 써주었던 database경로로 네임 리졸류션 하여 설정을 해주었는데 에러가 발생을 하여 질문을 남깁니다. ㅠ-ㅠ혹시 제가 놓친 부분이나 잘못된 부분이 있다면 가르쳐주신다면 감사드립니다 ㅠㅠ 에러를 해결해보기 위해 도전해본 방법은 3가지 였습니다.몽고디비 주소를 127.0.0.1:27017 에서 database:27017로 변경 후 도커빌드 -업기존에 실행되고 있던 몽고디비를 중지한 후 도커 컴포즈업 실행 도커 이미지 모두 삭제한 후 다시 빌드 업 실행 해결 방법을 아신다면 답변 부탁드립니다. 감사합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
fiy.io로 진행할 때 APIURL설정에 관하여
fiy.io강의 진행 후vercel에 그맵마켓 웹 배포하기 강의 진행했는데화면에 데이터를 못받아 오고 있습니다.정말 죄송한데 원인을 잘 모르겠어요..어떤 부분을 어떻게 찾아봐야할까요.. fly.io에서 URL에 안들어가지는게 뭔가 이상한거같은데..안돌아가고 있다는 느낌이랄까요greb-market-server에서 fly deploy에러나는데 이거때문일까여?PS D:\VScode\grab-market-server> fly deploy==> Verifying app configValidating D:\VScode\grab-market-server\fly.tomlPlatform: machines✓ Configuration is valid--> Verified app config==> Building imageRemote builder fly-builder-blue-feather-4034 ready==> Creating build context--> Creating build context done==> Building image with Docker--> docker host: 20.10.12 linux x86_64[+] Building 23.1s (0/1)[+] Building 12.9s (12/14) => CACHED [internal] load remote build context 0.0s => CACHED copy /context / 0.0s => resolve image config for docker.io/docker/dockerfile:1 1.9s => CACHED docker-image://docker.io/docker/dockerfile:1@sha256:39b85bbfa7536a5feceb7372a0817649e 0.0s => [internal] load metadata for docker.io/library/node:16.17.1-slim 0.6s => [base 1/2] FROM docker.io/library/node:16.17.1-slim@sha256:1f6cbe8654b31c214225bddd12451b857 0.0s => CACHED [base 2/2] WORKDIR /app 0.0s => CACHED [build 1/6] RUN apt-get update -qq && apt-get install -y python pkg-config build- 0.0s => CACHED [build 2/6] COPY --link package.json package-lock.json ./ 0.0s => CACHED [build 3/6] RUN npm ci --include=dev 0.0s => CACHED [build 4/6] COPY --link . . 0.0s => ERROR [build 5/6] RUN npm run build 10.3s ------ > [build 5/6] RUN npm run build:#12 0.549#12 0.549 > grab-market-server@0.1.0 build#12 0.549 > react-scripts build#12 0.549#12 1.839 Creating an optimized production build...#12 10.22 Failed to compile.#12 10.22#12 10.22 ./src/App.js#12 10.22 Line 6: 'React' must be in scope when using JSX react/react-in-jsx-scope#12 10.22 Line 7: 'React' must be in scope when using JSX react/react-in-jsx-scope#12 10.22 Line 8: 'React' must be in scope when using JSX react/react-in-jsx-scope#12 10.22 Line 9: 'React' must be in scope when using JSX react/react-in-jsx-scope#12 10.22 Line 10: 'React' must be in scope when using JSX react/react-in-jsx-scope#12 10.22 Line 12: 'React' must be in scope when using JSX react/react-in-jsx-scope#12 10.22#12 10.22 Search for the keywords to learn more about each error.#12 10.22#12 10.22------Error: failed to fetch an image or build from source: error building: executor failed running [/bin/sh -c npm run build]: exit code: 1
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
section 10 수업과 관련해서 질문드립니다!
데이터 추가 후 서버를 종료하고 다시 실행시키면 사진처럼 id column이 사라져버립니다.이유를 모르겠습니다 ㅠ..
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
Duplicate entry '' for key 'product.PRIMARY' 에러
graphql로 상품등록 하고 mysql를 끄고 다시 키면 Duplicate entry '' for key 'product.PRIMARY' 에러가 발생합니다. 그래서 mysql에 있는 데이터를 삭제하고 다시 mysql를 키면 정상적으로 작동을 합니다. 데이터를 수동으로 삭제를 안하고 작동을 어떻게 시킬수 있나요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
fly.io 로그인? 명령어 인식이 안돼요
현시점에서 명령어가 flyctl -> fly로 바뀐거같은데양쪽 명령어 둘다 안먹히네요. fiyio인스톨하고 vscode재기동해봤는데도 같아요+다른 명령어는 된거보면 환경변수문제는 아닌거같은데..아래와 같은 메세지가 뜨는데 잘 모르겠습니다.!PS D:\VScode\grab-market-server> fly auth loginfly : 'fly' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.위치 줄:1 문자:1+ fly auth login+ ~~~+ CategoryInfo : ObjectNotFound: (fly:String) [], CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException 로컬에서 파워셀열어 실행하면 넘어가는데..
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
section 29 update 함수 어떻게 수정하면 될까요?
감이 안잡히는데 좀 도와주세요 ㅜㅜ힌트라도 주시면 감사하겠습니다.. async update({ productId, updateProductInput, }: IProductsServiceUpdate): Promise<Product> { const product = await this.findOne({ productId }); this.checkSoldout({ product }); const result = this.productsRepository.save({ ...product, // 수정 후 수정되지 않은 다른 결과값까지 모두 받고 싶을 때 사용 ...updateProductInput, }); return result; }
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
section 29 예제 코드 오류
안녕하세요. section29까지 수강을 다 진행하였는데요.예제 코드 관련 오류가 있어 질문드립니다.예제코드가 데이터베이스 처음 만든 상태에서는 괜찮은데 데이터베이스에 데이터를 넣고 코드를 수정하면 아래와 같은 오류가 나옵니다.query failed: ALTER TABLE `product_saleslocation` ADD `id` varchar(36) NOT NULL PRIMARY KEY error: Error: Duplicate entry '' for key 'product_saleslocation.PRIMARY' query: ROLLBACK [Nest] 33022 - 05/21/2023, 12:47:43 PM ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... QueryFailedError: Duplicate entry '' for key 'product_saleslocation.PRIMARY'그리고 DBeaver로 확인하면 product_saleslocation의 기본키인 "id"가 자동으로 삭제되어 있습니다. product_saleslocation의 비정상적인 데이터를 삭제해도 다른 테이블의 기본키에서도 동일한 오류가 발생합니다. 코드를 단순히 주석만 삭제하고 저장해도 프로젝트가 재실행되고 나서 저런 오류가 발생합니다. 프로젝트가 재실행될 때마다 DB에 자동적으로 뭔가 데이터 수정 작업을 하는거 같은데 아무 요청도 안 했는데 DB에 수정이 일어나는 이유를 모르겠습니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
sleact 테이블 생성에 실패 하시는 분들을 위한 팁
강의 4~ 5분 즈음에 sleact 테이블을 생성하는데요아래의 에러 메시지가 나오면서 테이블 생성에 실패 하시는 분들은> a-nest@0.0.1 db:create > ts-node ./node_modules/typeorm-extension/dist/cli/index.js db:create -d ./dataSource.ts /Users/user/Documents/SideProjects/sleact/a-nest/node_modules/mysql2/lib/connection.js:161 const err = new Error( ^ Error: Can't add new command when connection is in closed state at Connection._addCommandClosedState (/Users/gim-uijung/Documents/SideProjects/sleact/a-nest/node_modules/mysql2/lib/connection.js:161:17) at Connection.end (/Users/gim-uijung/Documents/SideProjects/sleact/a-nest/node_modules/mysql2/lib/connection.js:902:26) at Query.onResult (/Users/gim-uijung/Documents/SideProjects/sleact/a-nest/node_modules/typeorm-extension/dist/database/driver/mysql.js:27:28) at Connection._notifyError (/Users/gim-uijung/Documents/SideProjects/sleact/a-nest/node_modules/mysql2/lib/connection.js:241:17) at Connection._handleFatalError (/Users/gim-uijung/Documents/SideProjects/sleact/a-nest/node_modules/mysql2/lib/connection.js:180:10) at Connection._handleNetworkError (/Users/gim-uijung/Documents/SideProjects/sleact/a-nest/node_modules/mysql2/lib/connection.js:193:10) at Socket.emit (node:events:513:28) at Socket.emit (node:domain:489:12) at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) {}dotenv 패키지를 설치하세요.npm i dotenvdotenv 설치하는 부분이 편집 과정중 어디선가 생략된것 같아요.아주 간단 한건데 이거 때문에 삽질을 좀 해서 혹시나 도움이 될까 싶어 올립니다.
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
windows에서 nodemon을 통한 app.js 실행 문제
안녕하세요 선생님windows 11 운영체제 플랫폼에서 강의를 수강하고 있습니다.webstorm IDE 사용하고 있습니다.nvm windows를 설치해서 사용 중이며 node 18 lts 버전을 사용 중에 있습니다.npm i nodemon --save-devpackage.json에 devDependencies에 추가한 상태입니다.선생님과 똑같이 cmd 창에서 node app 입력했을 경우 잘 실행이 되었는데요.nodemon app 을 입력했을 경우 다음과 같이 실행할 수 없습니다.C:\Users\mingyo\study\nodejs\nodePractice\express>nodemon app'nodemon'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.C:\Users\mingyo\study\nodejs\nodePractice\express>nodemon app.js'nodemon'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.찾아봤을 때는nodemon을 -g 옵션을 줘서 전역으로 설치하는 방법시스템 환경 변수를 수정(?)하는 방법이렇게 크게 두 가지 방법이 있는 것 같았습니다.global 설치는 선생님이 별로 추천하지 않는다고 하셔서 어떤 해결 방법을 사용하는 걸 추천하시는지 궁금합니다.아 그리고 nvm windows를 사용해서 node를 다운받았는데, nvm windows 사용으로 인해 이 문제가 발생한 건지도 궁금합니다.조금 찾아보긴 했는데 이렇게 질문드리는 게 적절한지 잘 모르겠습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
puppeteer 라이브러리 사용 중에 질문 드립니다.
퍼펫티어 쪽 코드인데 미니프로젝트에서 요구한 30개 이상을 크롤링 하는 부분을 완성을 해서 추가적으로 전체 메뉴를 긁어오고 싶어서 위와 같이 코드를 추가했습니다.12번째 코드부터 15번째 코드까지가 총 데이터 길이를 구하는 코드인데해당 코드에서 console.log(cnt);콘솔로 cnt를 출력해보면위와 같이 숫자 10까지 밖에 출력이 안되어서 질문 드립니다. 퍼펫티어 docs에서도이렇게 설명이 되어있어서 해당 코드라면 스타벅스 내에 있는 모든 전체상품 이미지가 크롤링 되어야 될 거 같은데스타벅스 홈페이지에서 카피를 하면 nth-child 의 값은 10까지 밖에 찍히지 않고전체 메뉴가 크롤링 되는 것이 아닌 도중에 제주 말차 메뉴까지 밖에 크롤링이 되지 않는 것이 의문이라 질문 드립니다. 혹시 해당 코드에 문제가 무엇인지 조언을 부탁 드리고 싶습니다 ㅠㅠ 전체 코드는 아래와 같습니다.import puppeteer from "puppeteer"; import mongoose from "mongoose"; import { starbucks } from "../model/starbucksSchema.js"; export async function startCrawling() { const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); await page.setViewport({ width: 1920, height: 1080 }); await page.goto("https://www.starbucks.co.kr/menu/drink_list.do"); await page.waitForTimeout(2400); const cnt = await page.$$eval( `#container > div.content > div.product_result_wrap.product_result_wrap01 > div > dl > dd:nth-child(2) > div.product_list > dl > dd `, (data) => data.length ); console.log(cnt); for (let i = 1; i <= cnt; i++) { const second_cnt = await page.$$eval( `#container > div.content > div.product_result_wrap.product_result_wrap01 > div > dl > dd:nth-child(2) > div.product_list > dl > dd:nth-child(${i}) > ul > li`, (data) => data.length ); for (let j = 1; j <= second_cnt; j++) { const image = await page.$eval( `#container > div.content > div.product_result_wrap.product_result_wrap01 > div > dl > dd:nth-child(2) > div.product_list > dl > dd:nth-child(${i}) > ul > li:nth-child(${j}) > dl > dt > a > img`, (el) => el.src ); const name = await page.$eval( `#container > div.content > div.product_result_wrap.product_result_wrap01 > div > dl > dd:nth-child(2) > div.product_list > dl > dd:nth-child(${i}) > ul > li:nth-child(${j}) > dl > dd`, (el) => el.textContent ); console.log(`이름: ${name}, 이미지: ${image}`); const starbucks_db = await starbucks.updateOne( { name: name }, { img: image }, { upsert: true } ); } } await browser.close(); } startCrawling();
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
우분투에서 빌드 시 오류가 생깁니다..
back과 front 둘다 우분투 서버 연결 해놓고,node -v / npm -v 해서 버전 확인도 했습니다.기본 node는 버전이 19이고 우분투에 설치한건 14버전입니다.front에서 빌드 하려는데npm ERR! missing script: buildnpm ERR! A complete log of this run can be found in:npm ERR!/home/ubuntu/.pm/_logs/2023-05-19714_54_17_6527-debug. log이런 오류의 원인은 뭘까요.. ㅠㅠ몇시간동안 방법을 찾지못해서 글남깁니다 ㅠㅠ제 깃허브 주소도 남깁니다..+레파지토리는 미리 생성해둔거라서 그냥 여기있는 git init을 하지 않고, 주소를 그대로 사용하여 clone 했는데도 이것도 문제가 될까요?https://github.com/nuring9/next.js-redux-saga-SSR-nodebird.git
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
객체를 저장하는 경우도 있나요?
안녕하세요. 혹시 디비에 객체를 저장하는 경우도 있나요? 예를들어 아래처럼 5개의 색상 키와 그 키에 해당하는 string을 값으로 가지는 객체 형태를 유저 정보에 저장하고 싶어요.// Color 객체 예시 입니다. { RED: string; BLUE: string; GREEN: string; YELLOW: string; PURPLE: string; }nest&typeorm는 처음이다보니 chatgpt의 도움을 많이 받고 있는데요. 객체는 저장이 되지 않지만 postgresql 에서는 이런 방법을 알려주긴하더라고요. export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() email: string; // 생략... @Column({ type: 'jsonb', nullable: true }) categories: { [key in Color]: string } | null; // 생략... 이 5개에서 늘어나거나 줄어들일이 없어서 테이블을 만드는게 맞는지 고민이 돼서요. 위와 같이하는건 좀 이상한 방법일까요? 이럴거면 그냥 email:string 하듯이 RED:string 이런식으로 컬럼 5개로 저장하는 방법이 나을까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
18버전 업데이트 강의는 언제 업로드되나요?
리액트 16버전이라 강의 듣는데 헷갈립니다.... 최신 버전 이미지를 추가 해주시긴 하였으나, 기본 설명 자체가 16버전이라 혼란스럽고 불편합니다.당연히 최신 버전 강의인줄 알고 구매 하였는데, 이전 버전이 베이스로 된 강의면 제가 이 돈을 들여서 강의를 구매할 이유가 없다고 생각합니다.강의 업데이트 되는거 맞나요? 언제 업로드 되는건가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
backend폴더 복사 후, dist폴더의 위치
안녕하세요.21-03 폴더를, 23-01/backend 폴더 내에 복사하였습니다.빌드 후, dist 폴더가 backend/backend/dist 에 위치합니다. 수업화면에서 처럼 backend/dist에 위치하게 하려면 어떻게 해야하나요?답변해주시면 감사하겠습니다~
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
로그인을하면 'Missing credentials' 이 뜹니다
회원가입을 끝내고 똑같이 이메일과 비밀번호 입력하고 로그인을 하면 401에러가 뜹니다.그래서 routes/user.js에서 info값을 콘솔로 보니 이렇게 info값이 들어오더라구요제 코드는 이렇습니다.< local.js ><routes/user.js><passport/index.js>에러를 인터넷에 서칭해보니까 local.js 안에new LocalStrategy 안에 usernameField와 passwordField를 제대로 값이 바인딩 됐는지 여부를 보라고 되어있는데 틀린게 없어보입니다...어떤걸 잘못한걸까요 ㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
OG 실습 중에 궁금한게 생겨 질문드립니다.
불과 얼마전에 네이버가 사이트를 바꿨는데요오늘 OG 실습을 하던 중, 네이버 head / meta에 OG tag가 사라진 것을 확인했습니다.OG tag가 없이도 미리보기가 잘 구현되는데, 어떻게 가능한지가 궁금해 질문드립니다.
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
마지막 수업 중 TypeScript로 전환하는 과정에서 LocalStrategy를 수정하던 중 발생한 오류입니다.
안녕하세요.수업 너무 잘 듣고 있던 학생입니다. 다름이 아닌 수업에서는 수정하지 않았지만 다음과 같은 오류가 발생하였고, 오류내용은 다음과 같습니다.-> 해당 코드는 controllers > auth.ts파일 중 login메서드의 구현부입니다.$ npx tsc --noEmit controller/auth.ts:27:37 - error TS7006: Parameter 'authError' implicitly has an 'any' type. 27 passport.authenticate('local', (authError, user, info) => { ~~~~~~~~~ controller/auth.ts:27:48 - error TS7006: Parameter 'user' implicitly has an 'any' type. 27 passport.authenticate('local', (authError, user, info) => { ~~~~ controller/auth.ts:27:54 - error TS7006: Parameter 'info' implicitly has an 'any' type. 27 passport.authenticate('local', (authError, user, info) => { ~~~~ Found 3 errors in the same file, starting at: controller/auth.ts:27그래서 해당 파라미터를 any로 타입을 줘서 해결하였지만, any를 가급적 사용하고 싶지 않아 다른 방법을 찾고 있는데 괜찮은 방법이 있을까요? 시도했던 방법은 다음과 같습니다.콜백함수를 별도의 함수로 빼내어 타입을 지정해준 방법 (passport모듈의 AuthenticateCallback타입)-> 하지만 message에서 다음과 같은 오류를 받음.controller/auth.ts:33:55 - error TS2339: Property 'message' does not exist on type 'string | object | (string | undefined)[]'. Property 'message' does not exist on type 'string'. 33 return res.redirect(`/?loginError=${info?.message}`);-> message as string으로 해결해보려 하였지만 같은 오류메세지를 반복.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
04-06 Mongoose 활용 강좌 21분 경에 포트포워딩 주석을 해제하고 진행했는데
저는 주석 안풀고 그냥 네임 리졸루션으로 했는데 그렇게 진행해도 되나요? 그런데 이렇게 하면 compass 프로그램 주소를mongodb://my-database:27017/mydocker 이렇게 가야하는 건가요?