안녕하세요. 강의 너무나 잘 보고 있습니다. 이번 강의를 수강하는 도중에 갑자기 heroku가 갑자기 나오길래 이전 강의에서 놓친 부분이 있나 확인해보았는데 그 전에 언급하신 적은 없더라구요. 저는 아직 heroku를 사용해 본적이 없어서, heroku 홈페이지에서 계정을 만든 후, app을 만든다음, setting 부분의 Config vars에서 강의에서 하신 것 처럼 MONGO_URI를 추가하였습니다. npm run start는 정상적으로 작동을하는데, 혹시 제가 추가적으로 setting을 해야할 것들이 있을까요?
전체적인 구조는 잘 설명해 주셔서 이해했습니다! 클라이언트 - 노드 서버 - dialogflow API 이렇게 되는데, 이번 강의에서 노드 라우트에서 보면 제가 dialogflow에서 만든 계정 정보(프로젝트 아이디 등등)를 가지고서 세션을 형성해서 연결하는 것까지 이해했습니다! 그래서 그 특정 정보를 가지고 제 계정으로 만들었던 dialogflow API로 보내게 되는 거구요! 그런데, GOOGLE_APPLICATION_CREDENTIALS 환경변수를 만들긴 했는데 이것이 어디에 쓰이는지 모르겠습니다... ㅠ '프로젝트 이름-key.json' 라는 파일 안에는 제가 생성한 dialogflow 프로젝트 정보가 들어 있는데요, 이것이 있는 파일 경로를 이용해 일단 환경 변수를 셋팅했는데, 딱히 코드 상에서는 해당 환경 변수를 이용하는 곳이 없더라구요... ㅠ 그런데 서버를 돌리고 포스트맨으로 요청을 보내면 잘 응답이 오는 것을 확인할 수 있었습니다. 즉, 현재 노드 서버와 dialogflow API가 연결이 잘 됐다는 뜻인데요, 왜 이게 가능한지 모르겠습니다... const projectId = config . googleProjectID ; const sessionId = config . dialogFlowSessionID ; // 내 계정을 이용하여 dialogflow와의 세션 생성 const sessionClient = new dialogflow . SessionsClient (); const sessionPath = sessionClient . sessionPath ( projectId , sessionId ); 위에서 보시면 그저 프로젝트 이름하고, 임의로 정한 세션 아이디명을 넣어준 것 뿐인데, 어떻게 노드 서버가 제 dialogflow 프로젝트를 특정하여 잘 연결하는지 원리를 모르겠습니다...
강의 너무나 잘보고 있습니다.궁금한 게 있는데 process.env는 제가 설정을 따로 안했는데도 쓸 수 있는걸 보니,노드를 설치하면 따라오는 process객체를 통해 접근하는 거로 이해가 가는데요.그렇다면 1.NODE_ENV도 노드설치시 process.env객체 안에 자동으로 있는 key이기에 사용가능한가요? 2. process.env.NODE_ENV === 'production'은 헤로쿠 통해 배포시에 사용하는 것은 알겠는데 npm start 실행시 production일지 / dev일지는 제가 따로 안 준것 같은데 별 말 없으면 노드는 자동으로 dev모드로 실행하는 건가요???
6버전 이상부턴 default export가 없어서 import {Helmet} from 'react-helmet'; 이렇게 받아와야 하는거 같아요 버전 업데이트를 하면서 default export를 안쓰고 {}로 감싸고 import 해와야 하는데, 질문) 패키지에 어떤 기능추가를 위해서 저렇게 default export를 안쓰고 바꾸는 건가요?? 보통 어떤경우에 패키지 개발자가 저렇게 바꾸는지 궁금합니다.
userSchema.pre("save", function (next) { var user = this; if (user.isModified("password")) { bcrypt.genSalt(saltRounds, function (err, salt) { ... var user = this 를 하면 user 에는 뭐가 담기게 되는거죠?ㅠㅠ 또 여기서 var user = this 를 선언을 했는데 userSchema.methods.generateToken = function (callback) { var user = this; var token = jwt.sign(user._id.toHexString(), "secretToken"); ... 왜 여기서 또 선언을 하는 거에요? User.js 에서 user 이라는 변수가 뭔지 정확히 모르겠습니다ㅠㅠ
저도 postman에서 계속 로딩만 뜨길래 오타났나 계속 찾다가, 강사님 답변 보고 해결해서 여기에 글 남겨요. /User.js 파일 에서 userSchema.methods.comparePassword 구문 안 bcrypt.compare 안에 있는 if문 수정하시면 잘 됩니다. if(err) return cb(err); // 맨 끝에 ,(콤마)아니고 ;(세미콜론)으로 해주셔야 합니다! cb(null,isMatch);
안녕하세요 영상 보고 첫 배포 성공 후, 똑같은 코드를 깃허브에서 다시 다운받아서 다시 배포하는 연습을 하고 있습니다. front 서버에 배포를 하려고 하는데 - sudo su - npm run build ( build 디렉토리는 /home/ubuntu/새로정의한프로젝트명/front) 여기서 permission denied가 떨어지네요 이하 에러 로그입니다.=------------------------------------------------> root@ip-172-31-35-199:/home/ubuntu/zepettoland/ch9_zepettoland/front# npm run build > react-nodebird-front@1.0.0 build /home/ubuntu/zepettoland/ch9_zepettoland/front > cross-env ANALYZE=true next build sh: 1: cross-env: Permission denied npm ERR! code ELIFECYCLE npm ERR! errno 126 npm ERR! react-nodebird-front@1.0.0 build: `cross-env ANALYZE=true next build` npm ERR! Exit status 126 npm ERR! npm ERR! Failed at the react-nodebird-front@1.0.0 build script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2019-11-25T03_23_39_728Z-debug.log 기존 소스에 프로젝트명만 바꾼건데요 문의드리겠습니다. 감사합니다.