묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
multer를 이용한 이미지 업로드 req.body.url 오류..
multer 수업을 수강한뒤 이미지 업로드를 위해 수업 실습처럼 이미지를 먼저 서버에 전송하여 압축한 뒤 이후에 저는 게시물이 아닌 동아리 정보 등록 폼으로 작성을 하려고 합니다. 실습과 같이 /img 라우터로 res.json을 이용해 url까지 전송하였습니다. 그 후 폼 제출 버튼을 클릭해서 콘솔로 req.body.url을 확인해보면 undefined 라고 나옵니다.. 저는 왜 req.body.url에 정보가 없는건가요??
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
시퀄라이즈로 오라클연동은 안되나요?
안녕하세요 강의에서는 마이에스큐엘기반이라 저는 기존에사용하는 디비가 오라클이라라 그냥 오라클 oracledb써서 직접쿼리입력해서 하는 방식으로 했습니다다 시퀄라이즈는 오라클지원이안되나요? 또 기존에 이미 구현되어있는시스템을 노드로 전환하고있는데 이런경우에는 어떤게효율적일지 조언가능할까요??
-
미해결Node.js에 TypeScript 적용하기(feat. NodeBird)
sequelize 질문입니다
항상 좋은 수업 감사합니다!! js기반 sequelize products와 Memo 1:n관계 설정해주고 이런식으로 가져왔습니다. await models.Products.findOne({ where : { id : req.params.id }, include :[ 'Memo' ] }); 근데 여기수업 그리고 공식API 문서보니까 getProjects이런식으로 1:n관계 데이터 가져오는 거 같아서 getXXX 이게 1:n 관계 가져올 때의 쿼리가 맞는지 궁금합니다.
-
미해결Vue로 Nodebird SNS 만들기
도커에서 sequelize 연결
goorm IDE 를 이용중인 수강생 입니다. IDE 에는 mysql 이 깔려있고 현재 접속이 잘 되는 상태입니다. ('mysql -u root -p' 로 정상적인 접속 가능) 하지만 백엔드를 실행시킬때마다 자꾸 오류가 사진과 같이 뜹니다.. app.js 는 강의와 똑같이 하였습니다. stack over flow 에선 저와같은 문제점이 있었는데 답변이 없어서 해결을 도저히 못하겠습니다..
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
시퀄라이즈 환경변수 설정
안녕하세요! 기존에 npx sequelize db:create를 하고, node_env를 따로 설정하지 않으면 development가 기본값으로 설정되고 npx sequelize db:create —env test하면 config.json의 test 디비로 설정이 된다고 이해했는데 (--env 옵션이 데이터베이스를 선택할 수 있는 옵션이 맞나요??) 환경변수를 --env를 사용해 test로 바꾸면 다시 development를 사용하고 싶을땐 어떻게 바꿔주어야하나요? (이미 db:create를 했다면 npx sequelize —env test 만 써도 되는 것인가요??)
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
카카오 로그인하기 도중 에러 질문입니다.
E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\node_modules\passport-oauth2\lib\strategy.js:83 if (!options.clientID) { throw new TypeError('OAuth2Strategy requires a clientID option'); } ^ TypeError: OAuth2Strategy requires a clientID option at Strategy.OAuth2Strategy (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\node_modules\passport-oauth2\lib\strategy.js:83:34) at new Strategy (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\node_modules\passport-kakao\dist\Strategy.js:33:31) at module.exports (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\passport\kakaoStrategy.js:7:18) at module.exports (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\passport\index.js:27:5) at Object.<anonymous> (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\app.js:38:1) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) [nodemon] app crashed - waiting for file changes before starting... npm start로 실행하면 다음과 같이 passport-oauth2에서 오류가 난다고 하는데, 강의에서는 이번에는 accessToken, refreshToken 와 같은 oauth2에 관련된 것은 사용하지 않는다고 들었습니다. 해당 오류는 어떻게 해결해야 하나요?
-
미해결Vue로 Nodebird SNS 만들기
mysql 과 gcp sql 연결
강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 군대에서 수업을 듣기 때문에 온라인IDE 를 이용 중인 수강생입니다. 따라서 mysql 을 localhost 에 연결하는 것이 문제가 있는데요.. GCP sql 중 mysql 에 값싼 인스턴스를 만들고 연결을 하려고 합니다 제 생각에는 config.json 에 username:root / password:인스턴스 비밀번호 / database:데이터베이스이름 / host:공개 IP / dialect:mysql 을 하면 연결될 것이라고 생각 하였는데 뜻대로 되지를 않네요.. 어떻게 하면 좋을까요 ㅠㅠ
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
req.session.color를 찾을수없다고 나오네요
12장 웹소켓 채팅을 구현중인데 req.session.color를 못찾는다고 나옵니다. node 버전은 v14.15.4이구요 TypeError: cannot read property 'color' of undefined 가 나옵니다. 강의처럼 {} 처리도 해보았는데 도 안되네요 문제가 되는 소스 첨부리며 `${req.session.color}님이 입장하셨습니다.` 위에 부분에서 오류가 발생합니다. const SocketIO = require('socket.io'); const axios = require('axios'); const cookieParser = require('cookie-parser'); const cookie = require('cookie-signature'); module.exports = (server, app, sessionMiddleware) => { const io = SocketIO(server, { path: '/socket.io' }); app.set('io', io); const room = io.of('/room'); const chat = io.of('/chat'); io.use((socket, next) => { cookieParser(process.env.COOKIE_SECRET)(socket.request, socket.request.res || {}, next); sessionMiddleware(socket.request, socket.request.res || {}, next); }); room.on('connection', (socket) => { console.log('room 네임스페이스에 접속'); socket.on('disconnect', () => { console.log('room 네임스페이스 접속 해제'); }); }); chat.on('connection', (socket) => { console.log('chat 네임스페이스 접속'); const req = socket.request; const { headers : { referer } } = req; const roomId = referer .split('/')[referer.split('/').length-1] .replace(/\?.+/, ''); socket.join(roomId); socket.to(roomId).emit('join', { user: 'system', chat: `${req.session.color}님이 입장하셨습니다.`, }); socket.on('disconnect', () => { console.log('chat 네임스페이스 접속 해제'); socket.leave(roomId); const currentRoom = socket.adapter.rooms[roomId]; const userCount = currentRoom ? currentRoom.length : 0; if (userCount === 0) { // 접속자 수가 0명이면 방 삭제 const signedCookie = req.signedCookies['connect.sid']; const connectSID = cookies.sign(signedCookie, process.env.COOKIE_SECRET); axios.delete(`http://localhost:8005/room/${roomId}`, { headers: { Cookie: `connect.sid=s%3A${connectSID}`, }, }) .then(() => { console.log('방 제거 요청 성공'); }) .catch((error) => { console.error(error); }); } else { socket.to(roomId).emit('exit', { user: 'system', chat: `${req.session.color}님이 퇴장하셨습니다.`, }); } }); }); };
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
Cannot read property 'split' of undefined 에러가 나옵니다...
코드 작성 후 정상적으로 실행이 되었는데 갑자기 재실행을 하면 8005 번 포트에서 대기 중 몽고디비 연결 성공 chat 네임스페이스에 접속 C:\Users\juren\OneDrive\바탕 화면\Node\chapter12\gif-chat\socket.js:29 .split('/')[referer.split('/').length - 1] ^ TypeError: Cannot read property 'split' of undefined at Namespace.<anonymous> (C:\Users\juren\OneDrive\바탕 화면\Node\chapter12\gif-chat\socket.js:29:8) at Namespace.emit (events.js:315:20) at Namespace.emit (C:\Users\juren\OneDrive\바탕 화면\Node\chapter12\gif-chat\node_modules\socket.io\lib\namespace.js:213:10) at C:\Users\juren\OneDrive\바탕 화면\Node\chapter12\gif-chat\node_modules\socket.io\lib\namespace.js:181:14 at processTicksAndRejections (internal/process/task_queues.js:75:11) [nodemon] app crashed - waiting for file changes before starting... 이런 에러가 나오면서 실행이 되지않습니다.. 그리고 저 에러가 나고 나서?? 채팅방에 사용자가 0명일때 채팅방이 삭제되는 부분도 삭제는 정상적으로 되는데 새로고침을 해줘야만 삭제된상태로 나옵니다.. 왜 그런걸까요 제로초님..
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
passport-naver
passport-naver을 이용해보려 하는데 porfile.displayName 값이 계속 undefind여서 nick값에 들어가지가 않습니다... naver 앱등록할때 권한도 다 설정 해줬는데 왜 정보를 받아오지 못할까요 제로초님 ㅠㅠ const passport = require('passport'); const NaverStrategy = require('passport-naver').Strategy; const User = require('../models/user'); module.exports = () => { passport.use(new NaverStrategy ({ clientID: process.env.NAVER_ID, // 네이버에서 발급받을 ID clientSecret: process.env.NAVER_SECRET, callbackURL: '/auth/naver/callback', // 네이버로부터 인증결과를 받을 라우터 주소 }, async (accessToken, refreshRoken, response, done) => { // 네[이버에서 인증 후 Token 과 profile을 보내준다. console.log('naver profile', response); try { const exUser = await User.findOne({ // 기존의 User가 있는지 조회 where: { snsId: response.id, provider: 'naver' }, }); if(exUser) { // 기존 User의 정보가 있다면 User정보를 done과 호출하고 전략을 종료 done(null, exUser); } else { // 기존의 User정보가 없다면 회원가입을 진행 const newUser = await User.create({ email: response.emails[0].value, nick: response.id, snsId: response.id, provider: 'naver', naver: response._json }); done(null, newUser); // 사용자 생성 후 done함수 호출 } } catch (error) { console.log(error); done(error); } })); }; 이렇게 작성했습니다 naver profile { provider: 'naver', id: '60727489', displayName: undefined, emails: [ { value: 'juren528@gmail.com' } ], _json: { email: 'juren528@gmail.com', nickname: undefined, profile_image: undefined, age: undefined, birthday: undefined, id: '60727489' } } 가져온 결과 콘솔로 확인해보니 이렇게 나오구요 좀더 공부해보려다 안되서 막막합니다 ㅠㅠ 혹시 이유를 아실까요 ㅠㅠ
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
deserializeUser findAll()실행시 로그인 성공 후 화면이 그대로입니다.
로그인을 하면 세션까지는 올바르게 잘 넣어집니다. 그런데 deserializeUser를 실행할때 findOne을 findAll로 실행하면 req.user까지만 되고 나머지 user.id user.nick 등이 받아와지지 않습니다. findAll 과 findOne에 id를 조건으로 입력하면 같은 결과가 나온다고 생각했는데 왜 안되는지 혹시 알려주실수 있나요 ㅠㅠ
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
Node.js 교과서
안녕하세요 제로초님 Node.js 교과서를 사서 열심히 수업을 듣고 있는 한 학생입니다! 다름이 아니고 유튜브를보며 노드교과서 개정판 4-5. 쿠키 이해하기에서 코드 질문이 있어서 여쭤보러 왔습니다. 이것은 되는 코드이고 const parseCookies = (cookie = '') => cookie .split(';') .map(v => v.split('=')) .reduce((acc, [k,v]) => { acc[k.trim()] = decodeURIComponent(v) return acc; }, {}); 이것은 안되는 코드입니다. const parseCookies = (cookie = '') => { cookie .split(';') .map(v => v.split('=')) .reduce((acc, [k,v]) => { acc[k.trim()] = decodeURIComponent(v) return acc; }, {}); }; 둘의 차이점은 함수를 {} 로 감싸냐 안감싸냐의 차이인데 화살표함수에서 중괄호는 선택사항이라고 배웠습니다. 만약 아래 코드를 사용하게 되면 (node:9452) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'name' of undefined at Server.<anonymous> (C:\Users\ksy\Desktop\Node.js\ch04\ex03\cookie2.js:30:22) at Server.emit (events.js:315:20) at parserOnIncoming (_http_server.js:874:12) at HTTPParser.parserOnHeadersComplete (_http_common.js:126:17) (Use `node --trace-warnings ...` to show where the warning was created) (node:9452) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) (node:9452) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 라는 에러가 뜹니다. 함수를 제대로 사용하지 못해서 그런거 같은데 왜 중괄호를 붙이면 함수가 실행이 안되는건지 궁금합니다