묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
route 53 질문드립니다
s3 를 다음과 같이 만들었는데 다음과 같이 별칭에서 나오지 않는데 어떻게 해야되나요?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
7.5 시퀄라이즈 사용하기 에러
7.5 시퀄라이즈 사용하기 강좌 부분입니다.피피티와 동일하게 작성했는데 sync에러가 자꾸 뜹니다. 어떻게 고쳐야할지 모르겠습니다. app.jsconst express = require('express'); const path = require('path'); const morgan = require('morgan'); const nunjucks = require('nunjucks'); const { sequelize } = require('./models'); const app = express(); app.set('port', process.env.PORT || 3001); app.set('view engine', 'html'); nunjucks.configure('views', { express: app, watch: true, }); sequelize.sync({ force: false }) .then(() => { console.log('데이터베이스 연결 성공'); }) .catch((err) => { console.error(err); }); app.use(morgan('dev')); app.use(express.static(path.join(__dirname, 'public'))); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use((req, res, next) => { const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`); error.status = 404; next(error); }); app.use((err, req, res, next) => { res.locals.message = err.message; res.locals.error = process.env.NODE_ENV !== 'production' ? err : {}; res.status(err.status || 500); res.render('error'); }); app.listen(app.get('port'), () => { console.log(app.get('port'), '번 포트에서 대기 중'); }); index.jsconst Sequelize = require('sequelize'); const env = process.env.NODE_ENV || 'development'; const config = require('../config/config')[env]; const db = {}; const sequelize = new Sequelize(config.database, config.username, config.password, config); db.seqelize = sequelize; module.exports = db;error ->[nodemon] restarting due to changes...[nodemon] starting node app.jsC:\Users\jyoun\udr_node\lecture\app.js:15sequelize.sync({ force: false }) ^TypeError: Cannot read properties of undefined (reading 'sync') at Object.<anonymous> (C:\Users\jyoun\udr_node\lecture\app.js:15:11) at Module._compile (node:internal/modules/cjs/loader:1241:14) at Module._extensions..js (node:internal/modules/cjs/loader:1295:10) at Module.load (node:internal/modules/cjs/loader:1091:32) at Module._load (node:internal/modules/cjs/loader:938:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12) at node:internal/main/run_main_module:23:47Node.js v20.7.0[nodemon] app crashed - waiting for file changes before starting... [제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
-
미해결[웹 개발 풀스택 코스] Node.js 프로젝트 투입 일주일 전 - 기초에서 실무까지
그럼 그걸 다 들어야 하나요?
다른 강의에 테이블이 있다고 해서 가보니..파일로 있는 게 아니고 화면에 있던데..그러면 저 처럼 그런 강의가 필요 없는 사람은..그걸 다 보고 만들라는 건가요? 그러기엔 시간이 아까운데요?하루죙일..개발 하다가 왔는데..그걸 보고 일일이 쳐서 만들라는 건 좀 아니지 않나요?
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
혹시 season과 seasonStartTime 이 있는 경우에 앱마다 다른 이유
season과 seasonStartTime이 있는 경우에 앱마다 사주팔자가 다르게 나옵니다. 이거 이유가 뭘까요?saju.day는 아래와 같은데 다른 앱들 모두 다 다릅니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
uploads파일의 이미지 이름 한글 깨짐 질문
프론트에서 formData넣기 직전에 파일 객체를 봤을때 한글이 제대로 잘 들어가 있었는데, 이걸 보내고 multer 설정에서 받자마자 바로 destination 메서드와 filename메서드에서 file.originalname을 콘솔 로그로 확인을 해보니 이미 한글이 깨져있더라고요. 그래서 프로젝트 로컬에서 터미널로 chcp 65001 명령어로 인코딩을 utf-8로 바꿔줬는데 그래도 여전히 이미지 파일명의 한글이 깨지던데 시도해볼 다른 방법이 더 있나요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
nextjs버젼에 대해서 질문드립니다.
현재 강의가 nextjs12로작성된듯한데 create-app 으로 12버젼을 지정해도 14버전이 깔려버립니다. 혹시 강의자체를 리뉴얼 하실 계획이 있으신가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
도메인을 구입하지 않으면 해당 실습은 못하는 건가요?
실습을 위한 아무 도메인을 구매하면 되는지 궁금해서 질문드립니다
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
USESTATE, 렌더링의 비동기 시점에 대해 질문드립니다.
강사님 안녕하세요아래의 코드를 보고 질문을 받아주시면 감사하겠습니다.type testDataType = { testNumber1:number; testNumber2:number; } const Test = () => { const [testData, setTestData] = useState<TestDataType>({ testNumber1:0, testNumber2:0 }); useEffect(()=>{ AxiosPromise로 Api를 호출하는 메서드 1({}) .then((res)=>{ const responseData = res.data; console.log("responseData"+ responseData);//8출력 setTestData({ ...testData, testNumber1: responseData }) AxiosPromise로 Api를 호출하는 메서드 2({}) .then((res)=>{ const responseData = res.data; console.log("responseData"+ responseData);//8출력 setTestData({ ...testData, testNumber2: responseData }) }, []) return (<>{`${testData.testNumber1} / ${testData.testNumber2}`}</>); }일 때, testData.testNumber1 에는 비동기로 가져온 데이터가 반영되는데testData.testNumber2 에는 비동기로 가져온 데이터가 반영이 되지 않습니다.제가 생각한 리액트 코드 순서는 이렇습니다.순서1.맨 처음 마운트 시점에 Test ()가 실행됩니다.그리고 useEffect() 가 실행됩니다.2.아직 마운트 시점입니다.useEffect() 가 AxiosPromise로 Api를 호출하는 메서드 1({})과AxiosPromise로 Api를 호출하는 메서드 2({})를 비동기로 실행합니다.이때 각각의 Axios Promise들은 각각 8이라는 데이터를 읽고useState의 setTestData() 를 실행하여testData.testNumber1에는 8testData.testNumber2에도 8이 들어갑니다. 그 다음에return (<>{`${testData.testNumber1} / ${testData.testNumber2}`}</>);가 실행됩니다.그렇게 웹페이지 UI에는8/8이 보이게 됩니다.그러나 막상 실행해보면0/88/0이 나옵니다. 그리고 그 원인이 2개의 AxiosPromise 메서드에서setTestData({...testData,testNumber1: responseData})setTestData({...testData,testNumber2: responseData})를 실행하기 때문 같습니다.그런데 조금 궁금한 게 있습니다.아무리 AxiosPromise와 UseState의 setter가 비동기 메서드라도 자바스크립트의 메모리 구조에서는태스크큐라는 줄을 서게 됩니다.그리고 호출스택이 비워지면 차례대로 호출스택으로 이동하면서 차례대로 동기적으로 실행된다고 생각합니다.즉, 저 2개의 setTestData() 도 동시에 일어나지 않고 실행 순서가 있다고 생각했습니다. 그래서 2개의 비동기 메서드가 동일한 setTestData를 호출해도 문제가 없다고 생각했습니다.제 생각의 틀린 점을 지적해주시면 감사하겠습니다.
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
$elemMatch 질문이 있습니다.
값을 찾을 때 $elemMatch 로 감싸줘야 둘 다 해당하는 값을 찾을 수 있다고 해주셨는데요.반대로, $elemMatch 를 쓰지 않으면 or 조건으로 검색이 된다고 이해했습니다. 여기서위와 같은 필터로 값을 검색 했을 때 username 이 Henry5522 이거나, title 이 ullam esse dolorem 인 모든 값이 필터 결과로 나와야 하는게 아닌가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
로그인시 hocs 질문
안녕하세요. hocs 관련해서 질문하나 남깁니다. 강사님께서 새롭게 진행해주신 refreshtoken이후의 로그인 체크를 통해, 진행하던 중 질문이 생겨 여쭙습니다. 문제점 : loginUser를 통해 로그인을 진행한 후 logoutUser을 통해 로그아웃을 한 뒤 로그인 창으로 돌아와 새로고침을 누르고 로그인을 하려고 하면 hocs에서 막히게 됩니다.로그인 > 로그아웃 > 새로고침 > 재로그인(hocs 오류) 로그를 찍으며 확인을 해보니첫 로그인 당시 로그첫 로그인 성공 후 로그로그아웃 후 새로고침 시 로그여기서 문제가 발생합니다. recoil store에서 공유하고 있는 restoreAccessTokenLoadable 함수가 로그아웃 후 새로고침을 하면 undefined을 반환을 합니다. 이후 withauth에서도 promise가 반환되지 않아서 로그인권한 오류가 발생하고 있습니다. 현재 restoreAccessTokenLoadable 코드입니다export const restoreAccessTokenLoadable = selector({ key: "restoreAccessTokenLoadable", get: async () => { const newAccessToken = await getAccessToken(); console.log(newAccessToken, "restoreaccess 결과입니다"); return newAccessToken; }, });해결 방법이 있을까요?? 혹시 몰라 다른 부분 코드도 첨부합니다withauth (로그인체크권한)useEffect(() => { console.log("withauth가 실행되었습니다"); void aaa.toPromise().then((newAccessToken) => { console.log(newAccessToken, "withauth결과입니다"); console.log(aaa); if (newAccessToken === undefined) { alert("로그인 후 이용가능합니다."); void router.push("/section30/30-01-login-refreshtoken"); } }); }, []);apollo에서 useEffect부분 const [accessToken, setAccessToken] = useRecoilState(accessTokenState); const aaa = useRecoilValueLoadable(restoreAccessTokenLoadable); useEffect(() => { void aaa.toPromise().then((newAccessToken) => { setAccessToken(newAccessToken ?? ""); }); }, []);입니다 감사합니다.
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.
await Promise.all([ comment.save(), Blog.updateOne({ _id: blogId }, { $push: { comments: comment } }), ]);위 코드에서comment.save() 는 정상적으로 동작해서 DB 에 입력이 되었지만 Blog.updateOne 은 알수 없는 오류로 실패가 떨어졌다면,데이터에 싱크가 맞지 않을 수 있을거 같은데요. comment.save 했던걸 되돌리거나 하는 처리가 있어야 할 거 같은데, 어떻게 처리할 수 있나요?
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
블로그에 user 데이터를 추가하는 방법에 대해서
읽는 시점에 populate 부분에 대한 시간도 최소화 하기 위해서 생성하는 시점에 user 의 최소한의 데이터를 넣어주고 있는거 같은데요.이렇게 접근하면, 화면 중심으로 모델이 설계가 되는게 아닐까요?요구사항이 바뀌거나, 다른 서비스에서 해당 API 를 사용하게 되면 매번 모델을 수정하고 데이터를 마이그레이션 해야 하는 이슈가 생길 수 있을거 같은데요.어떻게 생각하시나요?
-
해결됨React + GPT API로 AI회고록 서비스 개발 (원데이 클래스)
useState 오류
GPT API 호출, 프롬프트 연동 강의 0:24 계속해서 useState에 다음과 같은 오류가 뜹니다. import { useState } from "react";오류 사유는'useState' is declared but its value is never read. 대체 왜 해결이 안되는 것일까요..?ㅜ.ㅜ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
섹션 13. 10-02 강의 질문
안녕하세요 차근차근 강의 따라가고 있는 수강생입니다섹션 13. 10-02 강의를 듣고 궁금한 점이 생겨 글을 남깁니다 export interface IBoardWriteUIProps { onClickSubmit: (event: MouseEvent<HTMLButtonElement>) => void; onClickUpdate: (event: MouseEvent<HTMLButtonElement>) => void; ... }강의에서는 위 두 함수의 매개변수를 지정해 주었습니다 export interface IBoardWriteUIProps { onClickSubmit: () => void; onClickUpdate: () => void; ... }그런데 매개변수를 지정하지 않아도 오류가 없더라고요 const onClickSubmit = async () => { ... }; const onClickUpdate = async () => { ... };두 함수는 매개변수로 event를 받아오고 있지 않습니다 그래서 궁금한 점은 아래 2가지 입니다매개변수를 지정한 이유두 가지 경우 모두 오류가 나지 않는 이유항상 감사합니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
안녕하세요 AccessToken 관련 질문입니다.
안녕하세요 얼마전에 Access Token 관련 질문을 드렸습니다.저는 Backend 강의만 듣고 있어서 Frontend 강의가 어떻게 진행되었는지 몰라서 여쭤봅니다!현재 전역 스테이트 변수인 recoil을 사용해서 AccessToken을 저장 중 입니다.하지만 그냥 recoil만 사용할 때는 새로 고침 시 데이터가 삭제되어서 문제가 되고 있습니다.persistAtom 이라는 속성을 사용해서 상태가 유지되도록 할 수 있다는 것을 알게 되었는데 이렇게 사용할 경우 localstorage에 토큰 값이 그대로 들어가더군요.그러면 토큰 값이 그대로 노출되어서 보안상 문제가 될 것 같은데 혹시 이게 문제가 안되는지, 그대로 사용해도 되는지아니면 새로고침시 계속 token이 사라지니까 모든 컴포넌트에 useEffect를 사용해서 restoreAccessToken을 호출하도록 만들면 어떨까요?다른 방법이 있다면 방향을 알려주세요! 감사합니다.
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
blog 데이터 생성시 user 관련 오류
블로그 생성할 때 user 객체를 넣으면, 리턴 값으로 user 객체를 받을 수 있는 이점이 있다고 해서, 전달해봤는데요.아래와 같은 에러가 발생합니다.blog validation failed: user: Cast to ObjectId failed for value블로그 생성시 user 가 아닌 userId 를 전달하면 정상적으로 블로그가 생성되나, 리턴값에는 user 객체가 아닌 userId 가 매핑되어 있습니다.mongoose 버전이 올라가면서 변경된 사항이 있어서 발생한 이슈일까요?
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
age 예외 처리를 별도로 하신 이유가 궁금합니다.
이미 Schema 정의 할 때 age 를 number 로 했기 때문에, 디비에 저장할 때 number 값을 전달하지 않으면 에러가 발생해서 catch 에서 처리할 수 있을거 같은데요.업데이트 전에 필드를 validation 하면 모든 필드에 대해서 일일히 다 해줘야 할 것 같은데, 그렇게 하는 이유가 있을까요?그리고, catch 에러에서 number 값을 입력하지 않아서 발생한 오류임을 알 수 있는 방법(e.g., 에러 코드)이 있나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
섹션별 과제 정답코드
섹션별 과제 정답코드는 어디에 있나요? 포트폴리오 말고요
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
delete 메소드가 많은 이유가 궁금합니다.
User.findOneAndDelete User.deleteOne User.findByIdAndDelete이렇게 많은 인터페이스를 제공해주는 이유가 있을까요?단순히 편의를 위한 것인지, 상황에 따라 골라쓰는게 성능적으로 좋은 것인지 궁금합니다.
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
unique validation 처리
unique 에서 중복이 발생하면 catch 에 잡히는데, 이 때 unique 에러 때문에 발생한 에러인지 어떻게 알고 케이스를 나눠서 클라이언트에게 전달 할 수 있을까요?