묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
CacheModule
app.module.ts에서 redis연결하는데 @nestjs/common에 CacheModule이 없는데요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
새로 고침 시 로그인이 유지되지 않는 버그가 발생합니다!(쿠키 존재O)
안녕하세요 제로초님!AWS에 배포하기 및 카카오톡 공유하기 강의까지 끝마친 수강생 입니다!저는 윈도우 10, 크롬 브라우저, VSCode, MySQL 8버전을 사용하고 있습니다.로그인 후 새로 고침을 하면 로그인이 유지되지 않고 풀려 버리는 버그가 발생하여질문을 올리게 되었습니다! 이 문제는 쿠키가 있음에도 발생합니다!이 버그로 인해 총 2가지 상태에 이릅니다.1. 완전히 로그인을 한 상태에서 새로 고침을 하면 쿠키는 남아있으나 로그인이 유지되지 않습니다.2. 완전히 로그인이 된 상태에서 프로필 페이지로 이동하면 로그인이 풀리며 홈페이지로 돌아옵니다.새로 고침 후 로그인이 풀리는 문제가 발생한 시점에서다시 로그인을 하려고 하면 로그인 유무 검사(로그인하지 않은 사용자만 접근 가능) 메시지가 뜹니다.로그인 후 로그아웃을 하면 해당 문제가 발생하지 않습니다.해당 에러를 임시로 해결하는 방법을 찾았습니다.프론트 페이지와 백엔드 페이지 애플리케이션 탭에서 쿠키를 지우면 다시 로그인을 진행할 수 있습니다. 하지만 말 그대로 임시로 해결하는 것 뿐이라 로그인 후 새로 고침을 하면아까와 똑같이 로그인이 풀려버립니다.문제를 해결하기 위해 페이지에서 콘솔 탭과 네트워크 탭, 애플리케이션 탭의 쿠키 쪽을 확인하였습니다.프론트 콘솔 탭 확인해당 에러 주소로 들어가 보았지만 외계어로 적혀있어 다른 곳을 먼저 확인해보기로 했습니다.프론트 네트워크 탭 확인401 Unauthorized 에러를 네트워크 탭에서 확인 했습니다.Headers 탭에 적힌 쿠키와 Cookies 탭에 적힌 쿠키는 똑같았습니다!프론트 쿠키 존재 확인로그인 후 로그아웃을 진행하면 쿠키가 남아있습니다. 백엔드 쿠키 존재 확인백엔드 페이지도 프론트 쪽과 똑같이 쿠키가 잘 들어가 있음을 확인하였습니다.페이지 쪽을 전부 확인한 뒤, 우분투 백엔드 pm2 monit을 확인해보니사용자 로그인 쪽에서 401 에러가 나고 있었습니다.sudo npx pm2 logs --err --lines 200 명령어로 에러 로그를 확인하였으나관련 에러는 찾지 못하였습니다.문제를 해결하기 위해 잘못 적은 코드가 있는지 검사하였습니다.아래는 가장 의심되는 코드들 입니다!리듀서, 사가, 라우터, 로그인 검사, 서버사이드 렌더링 순으로 작성하였습니다.front/reducers/user.js나의 사용자 정보 불러오기 리듀서const reducer = (state = initialState, action) => { return produce(state, (draft) => { switch (action.type) { /* 나의 사용자 정보 불러오기 요청 리듀서 */ case LOAD_MY_INFO_REQUEST: draft.loadMyInfoLoading = true; draft.loadMyInfoError = null; draft.loadMyInfoDone = false; break; /* 나의 사용자 정보 불러오기 성공 리듀서 */ case LOAD_MY_INFO_SUCCESS: draft.loadMyInfoLoading = false; draft.me = action.data; draft.loadMyInfoDone = true; break; /* 나의 사용자 정보 불러오기 실패 리듀서 */ case LOAD_MY_INFO_FAILURE: draft.loadMyInfoLoading = false; draft.loadMyInfoError = action.error; break;로그인 리듀서. . . /* 로그인 요청 리듀서 */ case LOG_IN_REQUEST: draft.logInLoading = true; draft.logInError = null; draft.logInDone = false; break; /* 로그인 성공 리듀서 */ case LOG_IN_SUCCESS: draft.logInLoading = false; draft.me = action.data; // 로그인 성공 시 실제 사용자 데이터 draft.logInDone = true; break; /* 로그인 실패 리듀서 */ case LOG_IN_FAILURE: draft.logInLoading = false; draft.logInError = action.error; break; front/sagas/user.js나의 사용자 정보 불러오기 사가// loadMyInfo 실행 시 서버에 loadMyInfoAPI 요청 function loadMyInfoAPI() { return axios.get('/user'); } // LOAD_MY_INFO 액션이 실행되면 loadMyInfo 함수 실행 function* loadMyInfo(action) { /* 요청 성공 시 LOAD_MY_INFO_SUCCESS 액션 디스패치 */ try { const result = yield call(loadMyInfoAPI, action.data); yield put({ type: LOAD_MY_INFO_SUCCESS, data: result.data, }); /* 요청 실패 시 LOAD_MY_INFO_FAILURE 액션 디스패치 */ } catch (err) { console.error(err); yield put({ type: LOAD_MY_INFO_FAILURE, error: err.response.data, // 실패 결과 }); } }로그인 사가// logIn 실행 시 서버에 logInAPI 요청 function logInAPI(data) { return axios.post('/user/login', data); } // LOG_IN_REQUEST 액션이 실행되면 logIn 함수 실행 function* logIn(action) { /* 요청 성공 시 LOG_IN_SUCCESS 액션 디스패치 */ try { const result = yield call(logInAPI, action.data); yield put({ type: LOG_IN_SUCCESS, data: result.data, // 성공 결과 : 서버로부터 사용자 정보를 받아옴 }); /* 요청 실패 시 LOG_IN_FAILURE 액션 디스패치 */ } catch (err) { console.error(err); yield put({ type: LOG_IN_FAILURE, error: err.response.data, // 실패 결과 }); } }back/routes/user.js브라우저 새로 고침 시 나의 사용자 정보를 복구하는 라우터나의 사용자 정보를 복구하는 라우터는 user 라우터들 중에서 제일 위에 위치합니다!// 브라우저 새로고침 시 나의 사용자 정보를 복구하는 라우터 router.get('/', async (req, res, next) => { // GET /user // req.headers 안에 쿠키가 들어있다. console.log(req.headers, "req.headers 안에는 쿠키가 들어있다."); try { /* (로그인해서) 사용자 정보가 있다면 */ if (req.user) { /* (비밀번호를 제외한) 모든 사용자 정보를 가져오는 함수 */ const fullUserWithoutPassword = await User.findOne({ where: { id: req.user.id }, attributes: { exclude: ['password'] }, // 모델 가져오기 include: [{ /* 나의 게시글 */ model: Post, attributes: ['id'], // id 데이터만 가져오기 }, { /* 나의 팔로잉 */ model: User, as: 'Followings', attributes: ['id'], }, { /* 나의 팔로워 */ model: User, as: 'Followers', attributes: ['id'], }] }); // 200번대 에러 출력 res.status(200).json(fullUserWithoutPassword); /* (로그아웃해서) 사용자 정보가 없다면 */ } else { // 아무것도 보내지 않기 res.status(200).json(null); } /* 에러 캐치 */ } catch (error) { console.error(error); next(error); } });로그인 라우터// 로그인 라우터 : 사용자 로그인 전략 실행 router.post('/login', isNotLoggedIn, (req, res, next) => { /* '로컬', (서버 에러, 성공 객체, 클라이언트 에러)가 전달 */ passport.authenticate('local', (err, user, info) => { // done에서 넣은 값들이 순서대로 전달되는 곳 /* 서버 에러 */ if (err) { console.error(err); // 콘솔 창을 통한 에러 메시지 출력 return next(err); // 에러 처리 미들웨어로 이동 } /* 클라이언트 에러 : 로그인하다 에러가 나면 클라이언트로 응답 보내기 */ if (info) { return res.status(401).send(info.reason); } /* 로그인 성공 객체 */ return req.login(user, async (loginErr) => { // 서비스 로그인이 끝난 후 패스포트 로그인 할 때 에러발생 시 처리 if (loginErr) { console.error(loginErr); return next(loginErr); } /* (비밀번호를 제외한) 모든 사용자 정보를 가져오는 함수 */ const fullUserWithoutPassword = await User.findOne({ where: { id: user.id }, attributes: { exclude: ['password'] }, // 전체 데이터에서 비밀번호만 제외 // 모델 가져오기 include: [{ /* 나의 게시글 */ model: Post, attributes: ['id'], // id 데이터만 가져오기 }, { /* 나의 팔로잉 */ model: User, as: 'Followings', attributes: ['id'], }, { /* 나의 팔로워 */ model: User, as: 'Followers', attributes: ['id'], }] }); /* (비밀번호를 제외한) 모든 사용자 정보를 프론트로 넘기기 */ return res.status(200).json(fullUserWithoutPassword); }); })(req, res, next); // 미들웨어 커스터마이징 });back/routes/middlewares.js로그인 검사// (로그인 안했을 때) 로그인 유무 검사 exports.isNotLoggedIn = (req, res, next) => { if (!req.isAuthenticated()) { next(); } else { res.status(401).send('로그인하지 않은 사용자만 접근 가능합니다.'); } }; 문제 해결을 위해 노드버드 커뮤니티에서 저와 비슷한 에러가 발생한 수강생 분이 계셨습니다!https://www.inflearn.com/questions/368573/%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%A7%88%EB%AC%B8-%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%80-%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A7%8C-%EC%A0%91%EA%B7%BC%EC%9D%B4-%EA%B0%80%EB%8A%A5%ED%95%A9%EB%8B%88%EB%8B%A4해당 글에서 제로초님은 쿠키가 있는 걸로 봐서 이미 로그인이 된 상태인데프론트에서 자신이 로그인 되었다는 것을 인식하지 못하고 있으며,해당 getServerSideProps 쪽에 문제가 있다고 힌트를 주셨습니다!제로초님의 노드버드Ch7 user/[id].jshttps://github.com/ZeroCho/react-nodebird/blob/master/ch7/front/pages/user/[id].jsfront/pages/user/[id].js강의를 진행하며 깃허브와 약간은 다른 코드가 있습니다.// 서버사이드 렌더링(SSR) : getServerSideProps 사용 /* 사용자 컴포넌트보다 먼저 실행, 매개변수 context 안에 store가 들어있다. */ export const getServerSideProps = wrapper.getServerSideProps(async (context) => { /* 변수 cookie에 모든 cookie 정보 저장 */ const cookie = context.req ? context.req.headers.cookie : ''; /* 쿠키를 안 써서 요청 보낼 때는 서버에서 공유하고 있는 쿠키를 제거하기 */ axios.defaults.headers.Cookie = ''; /* 서버일 때, 그리고 쿠키가 있을 때만 서버로 쿠키 전달하기 */ if (context.req && cookie) { // 실제로 쿠키를 써서 요청을 보낼 때만 잠깐 쿠키를 넣어 놓는다. axios.defaults.headers.Cookie = cookie; } /* 처음에 화면을 로딩하면 특정 사용자의 게시글 불러오기 요청 액션 객체 디스패치 */ context.store.dispatch({ type: LOAD_USER_POSTS_REQUEST, data: context.params.id, // 또는 context.query.id로 useRouter에 접근 가능 }); /* 처음에 화면을 로딩하면 나의 사용자 정보 불러오기 요청 액션 객체 디스패치 */ context.store.dispatch({ type: LOAD_MY_INFO_REQUEST, }); /* 처음에 화면을 로딩하면 다른 사용자 정보 불러오기 요청 액션 객체 디스패치 */ context.store.dispatch({ type: LOAD_USER_REQUEST, data: context.params.id, // 또는 context.query.id로 useRouter에 접근 가능 }); /* 나의 사용자 정보, 다른 사용자 정보 불러오기, 여러 게시글 불러오기 요청(REQUEST)이 성공(SUCCESS)으로 바뀔 때까지 기다리기 */ context.store.dispatch(END); await context.store.sagaTask.toPromise(); console.log('getState', context.store.getState().post.mainPosts); return { props: {} }; });리듀서, 사가, 그리고 해당 서버사이드 렌더링 쪽을 점검해보았으나 잘못된 점을 찾지 못하여 질문 남깁니다..어떻게 하면 사용자(나)의 로그인이 유지되게 할 수 있을까요? 혹시 힌트 키워드라도 주실 수 있을까요?긴 질문 글 읽어주셔서 감사합니다 제로초님 항상 강의 잘 보고 있습니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
포트폴리오 리뷰라는게
제가 만든 코드랑 다르다면 깃허브에 있는 코드로 수정해야되나요 아니면 깃허브에 있는 코드를 가져와서 강의 시청만 하는건가요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
40분 30초경 navigate 질문 있습니다
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)질문 하실때 꼭 확인하세요- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. navigate('/',{replace:True})가 일기 작성하는 페이지로 뒤로 가기를 해서 못오게 막는다는 말이 무슨 말인지 이해가 안갑니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
test 수업에서 eslint 오류
이런 오류가 뜨는데 무엇때문인가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
피그마에 css 코드를 볼 수 없어요.
이게 옆으로 옮겨지지 않습니다.검색해보니까 데브모드가 이제 유료화됐다고 하는데어떻게 해결해야할까요?
-
미해결Node.js 노드 빠르게 훑어보기: 서버부터 DB까지
오류 발생 도움 필요
강의제목: Node.js 노드 빠르게 훑어보기: 서버부터 DB까지따라 하다 문제가 발생한 회차: 13강 화면 구성 - Template Engine 확장npm install nunjucks를 하고..강의에서 하라는 대로 하면서 views 폴더에서 base.html을 수정하고, write.html을 작성하고base.html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!-- 공통된 요소 --> <nav> <a href="">Logo</a> <a href="">글 작성</a> </nav> <!-- 바뀌는 요소 --> {% block content %} {% endblock %} <footer> <p>Footer</p> </footer> </body> </html>write.html{% extends 'base.html' %} {% block content %} <h1>글 작성 페이지입니다.</h1> {% endblock %}index.js도 수정하고 npm run dev 를 해보면..index.jsimport express from 'express'; import path from 'path'; import nunjucks from 'nunjucks'; const __dirname = path.resolve(); const app = express(); //view engine set app.set('view engine', 'html');//main.html->main(.html) //nunjucks nunjucks.configure('views', { watch: true, //html파일이 수정될 경우, 다시 반영 후 렌더링 express: app }) //middleware //main page GET app.get('/', (req, res)=>{ res.sendFile(__dirname + '/public/main.html'); }); app.get('/write', (req, res) => { res.render('write.html'); }) app.listen(3000, ()=> { console.log('Server is running'); });127.0.0.1:3000에서는 main page라고 그냥 나오지만127.0.0.1:3000/write를 실행해보면 아래와 같은 에러메시지가 나옵니다.혹시 해결책을 아시는 분은 답변 부탁드립니다.사실 첨부파일 zip으로 올릴 수 있으면 한꺼번에 올리고 싶은데링크 첨부밖에 없어서 일단 이렇게 올립니다.이거 질문란을 못 찾아서 일반 커뮤니티에 올렸다가 강의 페이지 들어오니 질문란이 있는 거 같아서 백업하여 여기다 다시 올립니다.Error: template not found: write.html at createTemplate (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:234:15) at next (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\lib.js:260:7) at handle (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:267:11) at C:\Users\SBA\user\node_study\my_app\node_modules\nunjucks\src\environment.js:276:9 at next (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\lib.js:258:7) at Object.asyncIter (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\lib.js:263:3) at Environment.getTemplate (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:259:9) at Environment.render (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\environment.js:295:10) at NunjucksView.render (C:\Users\user\node\node_study\my_app\node_modules\nunjucks\src\express-app.js:18:9) at tryRender (C:\Users\user\node\node_study\my_app\node_modules\express\lib\application.js:657:10)
-
미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
에러 처리를 위한 단위테스트 작성
에러 처리를 위한 단위테스트 작성 강의 내용 중 이해가 가지 않는 부분이 생겨 글 남김니다.errorMessage 의 message 내용은 description property missing 에러입니다. 그렇다면 테스트 상황에서 포스트맨과 동일하게 description이 빠진 객체를 저장하다 에러가 발생해야 맞는 테스트가 아닌가 하는 의문이 생기네요.it('should handle errors', async () => {const errorMessage = {message: "description property missing"}; const rejectedPromise = Promise.reject(errorMessage); productModel.create.mockReturnValue(rejectedPromise); await controller.createProduct(req, res, next); expect(next).toBeCalledWith(errorMessage);})
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
getUser 관련
안녕하세요 제로초님! 다음과 같이 로그인후 바로 me를 호출하도록했는데 undefined이 찍혀서 왜 유저값이 들어있지 않은지 잘 모르겠습니다. axios에서 withCredential tue 넣었고 쿠키에 세션값이 저장되고 보낼때 header에 들어간것까지 확인했습니다. 제가 놓친 부분이나 누락한 부분이 있을까요? deserializeUser가 실행이 안되는거 같은데 이유를 모르겠네요
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
회원가입시에 로그인
안녕하세요 제로초님!passport 를 nest에 붙이는 법에 대해 이해하기 쉽게 알려주셔서 감사합니다! 하나 질문이 있는데요! 보통 서비스에서는 회원가입을 완료하면 cookie에 session정보(유저정보)를 넣어줘서 로그인후와 같은 경험을 하도록하는데요. 혹시 그 부분은 어떻게 구현해야할까요?passport에서 session정보를 cookie에 담아 보내는 로직을 모두 포함하다보니 방법이 잘 생각나지 않네요 ㅠ
-
미해결Next.js 풀스택 Notion 서비스 만들기
안녕하세요! 깃허브 소스관련 여쭤봅니다
안녕하세요![Next.js 필수 개발 가이드 3시간 완성!] 강의를 너무 만족하여 수강하였고, 이후 풀스택 강의를 수강하게 된수강생입니다. 위에 강의에서 커뮤니티에 올려주신 깃허브를 참고하여 오류&막히는 부분은 소스를 확인하여 수강하였습니다. 혹시 노션 풀스택강의에서도 깃허브 소스가 제공될 수 있을까요? 부탁드립니다. 감사합니다 :-D
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
페이지 라우팅 1
처음 강의를 시작하고 터미널을 열어 npx create-react-app emotion-diary 생성하고 npm install react-router-dom@6을 실행했는데 영상처럼 emotion-diary에 같이 적용이 안되고 따로 다른 파일형식으로 적용이 되는것 같은데 제가 하는 방식이 맞는지 확인 부탁드립니다
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
백엔드 MySQL에서 Drop Database 후 DB 생성 시 table이 생성되지 않습니다!
안녕하세요 제로초님!AWS에 배포하기 및 카카오톡 공유하기 강의까지 끝마친 수강생 입니다!사전에 back 폴더 이미지 모델에서 이미지 문자열 길이를 수정하였습니다.백엔드 루트 MySQL에서 react-nodebird DB 삭제 후react-nodebird DB를 다시 만들어도 table이 재생성 되지 않아 질문 드립니다!DB를 삭제한 이유는 에러 로그 확인 시 아래 문제가 발생했기 때문입니다.이상하게도 두 에러 메시지 모두 DB와 Table이 존재하는 상태일 때 발생하였습니다.Error: Unknown database 'react-nodebird'DatabaseError [SequelizeDatabaseError]: Table 'react-nodebird.테이블명'문제를 해결하기 위해 제로초님의 섹션6 프론트 서버 배포하기 강의 14:00 와똑같은 방법으로 해결하려 하였습니다. 그러나 해결되지 않았습니다.react-nodebird DB를 지우기 전 테이블 상태DROP DATABASE 후 CREATE DATABASE react-nodebird DB 생성.백엔드 루트 경로에 npx sequelize db:create 명령어 입력 및 성공똑같이 테이블이 생성되지 않는 문제가 발생한 다른 수강생 분의 질문 글https://www.inflearn.com/course/lecture?courseSlug=%EB%85%B8%EB%93%9C%EB%B2%84%EB%93%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EB%A6%AC%EB%89%B4%EC%96%BC&unitId=49016&category=questionDetail&tab=community&q=685995문제를 해결하기 위해 다른 방법을 찾던 중 같은 문제가 발생한 분을 찾았습니다!위 글에서 제로초 님께서는 테이블만 따로 재생성 하라고 하셨습니다.구글링 해보니 table을 만들기 위해서는 각 컬럼을 정의하는스키마를 작성하여 table을 만드는 방법이 많았습니다.강의에서는 나오지 않은 방법이라 함부로 시도하진 않았습니다...어떻게 하면 다시 table만 따로 생성할 수 있을까요?질문 글 읽어주셔서 감사합니다!
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
lightSail배포와 https port 소켓이슈!!!
안녕하세요! 선생님!선생님의 강의를듣고nest프로젝트를 lightsail에 배포성공하였습니다.헌데 별도의 인증서를 적용해주지 않으면http 프로토콜로 api서버가 만들어져서https를 적용하기위해 인증서를 발급받고적용하니 https로도 서버를 접근할수있게되었습니다. 근데 여기서 문제가 생겼습니다.저는 nest 프로젝트에서서버는 80 포트를 열고소켓은 8181포트를 열었습니다. lightsail에서 방화벽으로http 80https 443 으로 등록해놓았기때문에 프로젝트에서서버가 80번포트로 열렸던것은 문제가 되지 않았으나프로젝트에서소켓이 8181번포트로 열어놓았던것은cors문제가 생겨 소켓연결이 안되더라구요 그래서 lightsail에서https로 8181 등록해주면되는건가?했는데 https로 8181등록되지 않아서 custom으로 8181포트를 열어주면 되는건가?싶어서 8181포트도 방화벽에서 열어주었는데http에서만 8181포트가 open되는거지https에서는 8181포트가 여전히 허용되지 않더라구요ㅜㅜ 어찌하면 이문제를 해결할수있을까요? 참고로현재 프론트 프로젝트를 amplify에 호스팅해놓아서프론트웹서버의 static ip를 알수없는상황입니다!!
-
해결됨Next.js 풀스택 Notion 서비스 만들기
강의철회안내메일을 받았습니다
강의철회 안내메일을 받았습니다.ㅜㅜ그러면 기존 수강생인 경우에는 어떻게 하나요??? 이번 진행중인 프로젝트를 완료 하고나서 열공하려고 했거든요 ㅜㅜ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
AWS 강의 내용대로 했는데 요금 청구가됩니다.
프리티어로 가입해서 강의대로 EC2 로드밸런스 S3 이런거만 했는데 소액씩 요금이 계속 청구되네요 원래 배포하는데 계속 청구 되는건가요?
-
해결됨차세대 Node.js 백엔드 서버 개발(Fastify & Prisma & Typescript와 함께하는)
강좌의 샘플 프로젝트 파일을 올려주시면 좋을 것 같아요.
따라 치면서 해보고 있는데, 오타 같은 부분으로 인해서 실제 실행하는데 있어 시간이 걸리는 부분이 있네요. ^^;
-
미해결코로나맵 개발자가 알려주는 React + Express로 지도서비스 만들기 (Typescript)
mongodb 및 mongoose 초기 세팅에서 다운로드 질문입니다
mongodb compass 다운 받을때 사이트에서 mongodb shell을 다운로드 하셨는데 다운로드 해도 아무리 봐도 compass가 실행 되지 않는데요 . 그래서 아래에 mongodb compass(gui)를 다운받았더니 실행됩니다.제가 맞게 한건지 혹시 다르다면 답변 바랍니다
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
const [sortType, setSortType] = useState("latest");
const [sortType, setSortType] = useState("latest");강사님 하고 똑같이 useState 초기값을 latest로 했는데새로고침 하거나 페이지 이동하고 돌아오면 저는 5번부터 정렬되는데 왜 강사님은 1번부터 정렬되나요?latest니까 5번부터 정렬돼야 하는거 아닌가요?
-
해결됨Next.js 풀스택 Notion 서비스 만들기
테일윈드 자동정렬
강의를 보니 테일윈드 클래스 자동정렬 기능이 되어있으신거 같은데 prettier-plugin-tailwindcss 쓰시는건가요 아님 다른 방법이 있으신가요?