수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
Express.urlencoded와 json에 대해서 궁금한 점이 있습니다
urlencoded로 x-www-form-urlencoded의 데이터를 해석해서 json으로 보여준것을 기반으로 json이 해당 json을 해석해주는 것으로 이해했는데 잘 이해한 것일까요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
next에 대해서 궁금한 것이 있습니다
저번 강의에서 use는 next없이는 다음 라우터로 넘어갈 수 없다고 들었습니다이번에 get에 next를 사용하시는 것을 보고 궁금한 것이 생겼는데요get post put patch와 같은 라우터도 next없이는 다음 라우터로 넘어갈 수 없습니까?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
싱글스레드, 멀티스레드 한 파일에서 실행하니 싱글이 여러 번 시행됩니다.
영상 중 싱글스레드와 워커스레드 부분 코드를 함수명과 배열명만 바꿔 같은 파일 안에서 실행하였습니다.해당 캡처사진처럼 스레드를 나눈 만큼 if 안에 담기지 않은 싱글스레드 코드가 여러 번 실행된 것이 확인됩니다.어째서 이렇게 동작하는지 궁금하여 질문 남깁니다.즐거운 연휴 보내시길 바랍니다!
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
ppt+ 강의면 책 별도로 안봐도 됩니까?
안녕하세요.
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
그렇다면 혹시 use 해당 부분도 라우터인가요?
그렇다면 혹시 use 해당 부분도 라우터인가요?미들웨어를 use에 장착을 했다고 하셨는데 혹시 그렇다면 use도 라우터라고 부를 수 있는 것일까요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
미들웨어 함수 종료
노드도 자바스크립트이기 때문에 res.json() 다음에 코드가 있으면 실행이 되고 원래 자바스크립트 함수 종료를 위해선 return을 붙여줘야 합니다. 그럼 보통 미들웨어 함수가 return 안쓰고 마지막 코드에 res.json()으로 응답종료를 하는데 이런 경우엔 미들웨어 함수도 자바스크립트처럼 함수 선언식으로 표현한 함수일 뿐이고 undefined를 반환하는건가요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
람다 리사이징 질문
안녕하세요 영원한 스승 제로초님현재 이미지를 S3 Bucket 2개의 경로로 나누어 유저 프로필 이미지는 profile/ 게시글 이미지는 post/ 이렇게 저장하고 있습니다. 트리거의 접두사는 profile/ 이런 식으로 하나만 감지할 수 있는 거 같던데 프로필 이미지와 게시글 이미지를 다른 사이즈로 리사이징 하려고 한다면 트리거를 1개 추가하는 방법이 있을 거 같고 또 하나는 이미지를 하나의 경로 image/ 이런 식으로 같이 저장을 하고 저장될 파일명에 프로필 이미지와 게시글 이미지를 구분하여 람다 함수에서 프로필과 게시글의 이미지를 분기 처리하여 다른 사이즈로 리사이징 하는 방법이 있을 거 같습니다. 트리거를 추가한다면 비용이 많이 나올 거 같은데 2번째 방법이 적합할까요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
export할때
모듈 하나에는 export.odd = odd;로 export하고또 다른 하나는 module.export 해도 되나요 아니면 하나의 모듈에서 export.odd 처럼 각각 썼다면나머지 모듈에서도 export.변수 를 써야하나욥?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
JSON.parse
안녕하세요 :)[http모듈로 서버 만들기]의 [POST,PUT,DELETE 요청 보내기]에서 13분에 보여주신 [3.REST 서버 만들기](restServer.js에 주목) 페이지에서 'POST와 PUT 메서드는...(생략)... 단, 문자열이므로 JSON으로 만드는 JSON.parse 과정이 한 번 필요합니다.'라고 되어있는데요. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse에 의하면 'JSON.parse() 메서드는 JSON 문자열의 구문을 분석하고, 그 결과에서 JavaScript 값이나 객체를 생성합니다. '라고 되어있는데, JSON.parse가 JSON을 만드는 과정이 맞는지요..?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
184쪽 질문
else if (req.url === '/users') { res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); return res.end(JSON.stringify(users));184쪽의 restServer.js 예제에서 위의 get 부분에서 content-type이 책에서는 text/plain / 강의에서는 'application/JSON'이라 하셨는데, 어떤 게 맞을까요~? 혹시나 해서 둘 다 해 봤는데 브라우저에서 결과는 똑같이 나왔습니다 :)
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
sessionOption 관련 질문 드립니다!!
로그인 관련 문제입니다!! 제가 배포를 HTTPS로 해서요!! const sessionOption = { resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, }, }; 위 부분에서 HTTPS 배포시 secure 를 true로 해야한다고 하셨는데요!그래서 true로 했더니 배포에서는 정상적으로 로그인이 잘 되는데요!개발환경에서는 로그인이 안되더라구요!그래서 세션을 console.log 로 찍어봤는데요!Session { cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true, secure: false }, passport: { user: 1 } // 이 부분이 안나옴 }passport 부분이 안나오더라구요! 혹시나 해서secure: false이 부분을secure: process.env.SECURE이렇게 바꿔서 .env 파일에서 SECURE=false이렇게 했는데도 안되어서요 ㅠ배포 할때마다 true / false 바꾸다가 오류날것 같아서 그러는데해결 방법이 없을까요??
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
nunjucks views폴더 경로 설정 질문
nunjucks.configure('views', { express: app, watch: true, });nunjucks에서 views파일 경로를 설정할때 ./views이렇게 하지 않고 views로만 해도 경로 설정이 되는데 특별한 이유가 있나요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
EC2 서버에서 로그 관리
로컬에서 개발할 때는 morgan, winston으로 로그 관리를 하고 폴더를 열어서 기록을 확인할수가 있는데ec2 같이 실제로 배포를 하면 어떻게 로그를 확인하고 관리하나요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
npx sequelize db:create 시 connection 경로 질문
npx sequelize db:create를 해서 데이터베이스를 설치하면은 그 뒤로 workbench에서 새로 connection을 생성하면 그 데이터베이스가 새로 만든 connection에도 그대로 들어있는데 왜 그런것인가요?제가 mysql의 동작방식을 잘몰라서 이해가안되는거 같습니다
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
https 로 배포 하려는데 안되어서 질문 드립니다 ㅠ
https://www.zerocho.com/category/NodeJS/post/5ef450a5701d8a001f84baeb일단 배포는 했고 강사님 블로그 보면서 https 적용하라고 하셨는데요 ㅠ일반 배포로 해서 pm2 로 잘 돌아가게 만듦도메인 적용npx pm2 killsudo snap install certbot --classic sudo apt-get install nginxsudo certbot --nginx순차적으로 실행 (/etc/letsencrypt/live/도메인/) 폴더에 fullchain.pem / privkey.pem 생성 확인/etc/nginx/sites-enabled/default 파일 vim 으로 블로그에 있는 내용 도메인만 바꿔서 복붙( proxy_pass http://127.0.0.1:3060; 이 부분만 proxy_pass http://127.0.0.1; 이렇게 변경)/etc/nginx/nginx.conf 는 파일 내용이 같아 냅둠다시 프로젝트 폴더 가서 sudo npm start 실행이렇게 했더니 아래와 같은 에러가 나는데요 ㅠㅠㅠ제가 어디부터 잘못한걸까요? ㅠㅠnginx 설정 하는 방법을 잘 몰라서 ㅠ 도움 부탁드리겠습니다! ㅠ
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
배포 관련 질문 드립니다!!
우분투에서 git clone 프로젝트 해서배포를 일단 했는데요!이것저것 수정한 다음에우분투 메인에서 git clone 하려고 하니까destination path '폴더명' already exists and is not an empty directory.이렇게 폴더가 있기 때문에 안된다고 하네요? ㅠ코드를 수정한 다음에 기존 배포한 내용을 수정 / 배포 하려면이 부분을 어떻게 해야할까요??(폴더를 지울까 했더니 기존 업데이트 된 이미지 등의 데이터들 땜시 ㅠ)
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
클라이언트 서버에서 소셜 로그인
현재 상황클라이언트와 서버를 각자 다른 도메인에 배포했습니다.소셜 로그인은 passport 모듈과 session을 사용했습니다.서버에서 소셜 로그인이 성공해도 클라이언트에는 세션 쿠키가 전달되지 않습니다.클라이언트axios get 요청을 보내면 cors 에러가 떠서 a 태그를 사용했습니다.<a href="http://서버ip/auth/github">깃 헙 로그인<a/>서버아래의 코드는 강의의 내용과 동일합니다. passport 모듈을 활용해 소셜 로그인을 구현했습니다.import express from "express"; import passport from "passport"; import { isLoggedIn, isNotLoggedIn } from "../middlewares/authMiddleware.js"; const router = express.Router(); router.get("/github", passport.authenticate("github")); router.get( "/github/callback", passport.authenticate("github", { failureRedirect: "/", }), (req, res) => { res.redirect(`http://localhost:3000`); } ); router.get("/logout", isLoggedIn, (req, res) => { req.logout(); req.session.destroy(); res.json({ message: "logout" }); }); export default router;소셜 로그인에 성공하면 클라이언트 서버의 메인 페이지로 redirect 시키고 있습니다.문의서버에서 소셜 로그인 성공시 클라이언트 서버에도 session 쿠키를 전달하고 싶습니다.두 개의 다른 서버에서 소셜 로그인을 어떻게 구현해야될지 모르겠습니다.
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
nodemon 실행이 안됩니다!
안녕하세요! 강의 잘 듣고있습니다. express서버사용해보기 편에서 제로초님이 쓰신 코드 그대로 따라쳐보고 있는데요! nodemon app 을 cmd에 실행했을때 실행이 되지 않는데요 package에서도 nodemon이 확인이 되는데 왜 접근이 안되는 걸까요 ? 감사합니다
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
미들웨어 get으로 처리하는 방법
app.use((req, res, next) => { console.log('1 요청에 실행'); next(); }).use((req, res, next) => { console.log('2 요청에 실행'); next(); }).use((req, res, next) => { console.log('3 요청에 실행'); next(); })app.get('*/', (req, res, next) => { console.log('1 요청에 실행'); next(); }).get('*/', (req, res, next) => { console.log('2 요청에 실행'); next(); }).get('*/', (req, res, next) => { console.log('3 요청에 실행'); next(); })위에 처럼 use로 되어있는 미들웨어를 get으로 처리해도 똑같이 돌아가는데 둘의 차이점이 있나요?
- 미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
프로미스사용 이유
프로미스 resolve는 비동기환경에서 작동해 데이터를 저장하고 then이 나오면 데이터를 주는데 const a = setTimeout({} => {},0)으로 비동기환경에서 데이터를 받아오고 이 변수를 then위치에서 쓰는거랑 무슨 차이가 있는지 감이 잘 안 잡혀요 ㅠ 제가 몬가 단단히 잘못알고 있는건가요?..