게시글

etc - 2년 전 등록 / 일 년 전 수정

Node.js 교과서 질의응답용 포스트

FAQ

  • 스스로 해보기 풀이는 없나요? - 유튜브나 인프런 강좌에서 제공합니다(인프런에서도 무료로 보실 수 있습니다.)
  • 오타&오류 정오표는 어디에 있나요? - 이 링크를 클릭하세요. 
  • 이미지 말고 다른 파일을 업로드하려면 어떡하나요? - multer로 다른 파일 형식도 업로드 가능합니다(동영상, 문서 등등).
  • pug 스타일이 너무 싫어요 ㅠㅠ - ejs나 다른 걸로 바꾸시면 됩니다. pug는 제 책에서 중요한 부분이 아닙니다. 그저 지면을 아끼기 위해 선택했을 뿐이에요.
  • bcrypt가 윈도에서 안 깔려요. - bcrypt 문서에 윈도에서 bcrypt 설치하는 방법에 대해 나와 있습니다. 3버전부터는 그렇게 적용하셔야 합니다.
  • user && twit && twit.Liker.map(l => l.id).includes(user.id) 이 부분에서 에러가 나신다면, user && twit && twit.Liker && twit.Liker.map으로 바꿔주세요.
  • 시퀄라이즈 5버전에서 WHERE parameter "id" has invalid "undefined" value 문제는 https://github.com/ZeroCho/nodejs-book/issues/42 참고하세요
  • TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Set-Cookie"] 에러 발생하시는 분은 Expires 앞에 줄바꿈을 제거해주세요. 줄바꿈 문자가 들어가면 안 됩니다.

다른 질문은 댓글로 입력해주세요. 또는 길벗 공식 홈페이지에 문의를 남겨주시면 됩니다.

조회수:
0
목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.

댓글

74개의 댓글이 있습니다.
23일 전
9장 스스로 해보기 전가지 완료를 한 상태입니다. 책대로 다 했는데 밑에 한분과 같은 곳에서 오류가 났지만, 저는 id의 프로퍼티가 아닌 map의 프로퍼티를 찾을 수 없다는 내용입니다. 코드는 제 코드의 오류인듯 하여 제로초님의 코드를 그대로 인용하였습니다.

TypeError: C:\Users\junh0\Desktop\Programming\nodebird\chapter01\views\main.pug:26
24| input.twit-id(type='hidden' value=twit.id)
25| .twit-author= twit.user.nick
> 26| -const follow = twit.user && twit.user.Followings.map(f => f.id).includes(twit.user.id);
27| if twit.user && twit.user.id !== twit.user.id && !follow
28| button.twit-follow 팔로우하기
29| .twit-content= twit.content

Cannot read property 'map' of undefined

GET / 500 462.996 ms - 3284
GET /main.css 304 1.803 ms - -

--ㅡmain.pug 에서 오류가 나는 부분의 .twit 을 발최하였습니다. ----
input.twit-user-id(type='hidden' value=twit.user.id)
input.twit-id(type='hidden' value=twit.id)
.twit-author= twit.user.nick
-const follow = user && user.Followings.map(f => f.id).includes(twit.user.id);
if user && user.id !== twit.user.id && !follow
button.twit-follow 팔로우하기
.twit-content= twit.content
if twit.img
.twit-img
img(src=twit.img alt='섬네일')

프로퍼티를 찾지 못할 때 어떻게 해결해야 할까요? 책은 초판입니다!
23일 전
Followings가 undefined이라는 것인데 Followings가 어떨 때 언디파인드인지 생각해보시면 좋습니다. include가 안 되어있으면 언디파인드입니다
한 달 전
(node:4036) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.
(node:4036) UnhandledPromiseRejectionWarning: SequelizeAccessDeniedError: Access denied for user 'root'@'localhost' (using password: YES)
at ConnectionManager.connect (C:\Users\honm9\OneDrive\Desktop\코딩\Node.js
교과서\learn-sequelize\node_modules\sequelize\lib\dialects\mysql\connection-manager.js:118:17)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:4036) 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:4036) [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.

이런 오류는 어떻게 해결하나요?
한 달 전
시퀄라이즈, mysql 비밀번호가 틀렸다고 나오네요. config/config.json 확인해보시고 sequelize 명령어 호출하는 위치도 확인해보셔야겠습니다.
2달 전
13장에서 @google/maps API가 deprecated 되었다고해서 @googlemaps/google-maps-services-js API를 이용해 routes/index.js의 코드를 작성해봤습니다.
-------------------------------
const express = require("express");
const { Client } = require("@googlemaps/google-maps-services-js");
const History = require("../schemas/history");
const Favorite = require("../schemas/favorite");

const router = express.Router();
const client = new Client({});

router.get("/", async (req, res, next) => {
try {
const favorites = Favorite.findAll({});
res.render("index", { results: favorites });
} catch (error) {
console.error(error);
next(error);
}
});

router.get("/autocomplete/:query", async (req, res, next) => {
try {
const response = await client.placeQueryAutocomplete({
params: {
input: req.params.query,
language: "ko",
key: process.env.GOOGLE_MAPS_API_KEY,
},
});
return res.json(response.data.predictions);
} catch (error) {
return next(error);
}
});

router.get("/search/:query", async (req, res, next) => {
const { lat, lng, type } = req.query;
try {
const history = new History({ query: req.params.query });
await history.save();
let response;
if (lat && lng) {
response = await client.placesNearby({
params: {
keyword: req.params.query,
location: `${lat},${lng}`,
rankby: "distance",
language: "ko",
type,
key: process.env.GOOGLE_MAPS_API_KEY,
},
});
} else {
response = await client.textSearch({
params: {
query: req.params.query,
language: "ko",
type,
key: process.env.GOOGLE_MAPS_API_KEY,
},
});
}
res.render("result", {
title: `${req.params.query} 검색 결과`,
results: response.data.results,
query: req.params.query,
});
} catch (error) {
console.error(error);
next(error);
}
});

router.post("/location/:id/favorites", async (req, res, next) => {
try {
const favorite = await favorite.create({
placeId: req.params.id,
name: req.body.name,
location: [req.body.lng, req.body.lat],
});
res.send(favorite);
} catch (error) {
console.error(error);
next(error);
}
});

module.exports = router;
-----------------------------------
다른 분들이 실습하실 때 도움이 되면 좋겠습니다.
2달 전
router.get('/' ~ 에서 Favorite.find({}) 앞에 await을 빼먹었고 findAll이라고 잘못 작성되었네요..
2달 전
현재 맥을 사용중인데 mongodb를 설치하는것 까지는 되는데 동작을 하지 않습니다...
2달 전
시퀼라이저 부분을 하고있는데 이런 오류가 발생합니다.

> learn-sequelize@0.0.0 start /Users/ges/Documents/Node_Study/learn-sequelize
> node ./bin/www

internal/modules/cjs/loader.js:1032
throw err;
^

Error: Cannot find module 'sequelize/types'
Require stack:
- /Users/ges/Documents/Node_Study/learn-sequelize/models/user.js
- /Users/ges/Documents/Node_Study/learn-sequelize/models/index.js
- /Users/ges/Documents/Node_Study/learn-sequelize/app.js
- /Users/ges/Documents/Node_Study/learn-sequelize/bin/www
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1029:15)
at Function.Module._load (internal/modules/cjs/loader.js:898:27)
at Module.require (internal/modules/cjs/loader.js:1089:19)
at require (internal/modules/cjs/helpers.js:73:18)
at Object.<anonymous> (/Users/ges/Documents/Node_Study/learn-sequelize/models/user.js:2:23)
at Module._compile (internal/modules/cjs/loader.js:1200:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Module.require (internal/modules/cjs/loader.js:1089:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/ges/Documents/Node_Study/learn-sequelize/models/user.js',
'/Users/ges/Documents/Node_Study/learn-sequelize/models/index.js',
'/Users/ges/Documents/Node_Study/learn-sequelize/app.js',
'/Users/ges/Documents/Node_Study/learn-sequelize/bin/www'
]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! learn-sequelize@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the learn-sequelize@0.0.0 start 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! /Users/ges/.npm/_logs/2020-07-09T00_25_38_744Z-debug.log
2달 전
먼저 sequelize를 설치하셨는지 확인해보시고 models/user.js에서 require('sequelize/type s')으로 잘못 적지는 않으셨는지 확인해보세요(자동완성 오류일 수 있습니다)
2달 전
둘 다 제대로 되어있는데 오류가 발생할 수 있나요...? 확인해보았는데 설치 되어있고, 오타도 아니네요...
2달 전
models/index.js도 살펴보셔야 할 것 같습니다. db.User = require('./user')(sequelize, Sequelize)로 Sequelize가 DataTypes가 되는데 Sequelize가 제대로 require 되었는지 살펴봐주세요.
2달 전
해결되었습니다! 빠른 답변과 친절한 설명 정말 감사합니다. :)
3달 전
시퀼라이저 실행이 안됩니다..
gimseonghyeon@gimseonghyeon-ui-MacBookPro learn-sequelize % npm start

> learn-sequelize@0.0.0 start /Users/gimseonghyeon/learn-sequelize
> node ./bin/www

internal/modules/cjs/loader.js:1032
throw err;
^

Error: Cannot find module '/Users/gimseonghyeon/learn-sequelize/models/../config/config.js'
Require stack:
- /Users/gimseonghyeon/learn-sequelize/models/index.js
- /Users/gimseonghyeon/learn-sequelize/app.js
- /Users/gimseonghyeon/learn-sequelize/bin/www
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1029:15)
at Function.Module._load (internal/modules/cjs/loader.js:898:27)
at Module.require (internal/modules/cjs/loader.js:1089:19)
at require (internal/modules/cjs/helpers.js:73:18)
at Object.<anonymous> (/Users/gimseonghyeon/learn-sequelize/models/index.js:7:16)
at Module._compile (internal/modules/cjs/loader.js:1200:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Module.require (internal/modules/cjs/loader.js:1089:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/gimseonghyeon/learn-sequelize/models/index.js',
'/Users/gimseonghyeon/learn-sequelize/app.js',
'/Users/gimseonghyeon/learn-sequelize/bin/www'
]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! learn-sequelize@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the learn-sequelize@0.0.0 start 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! /Users/gimseonghyeon/.npm/_logs/2020-06-30T02_00_39_748Z-debug.log
gimseonghyeon@gimseonghyeon-ui-MacBookPro learn-sequelize %
3달 전
learn-sequelize 안에 config 폴더 안에 config.json이나 config.js가 없나요?
3달 전
380페이지 까지 마치고 나서 카카오톡 로그인 버튼을 클릭하면 에러가 납니다. 코드도 제로초님 깃헙에서 그대로 가져왔고 라인별로 체크하고 이상해서 프로젝트 지우고 두번째로 다시 했는데 같은 에러가 납니다.

카카오톡 연동시에 동의 페이지 수락후 나오는 에러. 카카오톡 버튼 누를때마다 나옵니다.

User.find is not a function
TypeError: User.find is not a function
at Strategy._verify (D:\Study\node_essentials\ch09\nodebird\passport\kakaoStrategy.js:11:33)
at D:\Study\node_essentials\ch09\nodebird\node_modules\passport-oauth2\lib\strategy.js:195:22
at D:\Study\node_essentials\ch09\nodebird\node_modules\passport-kakao\dist\Strategy.js:74:20
at passBackControl (D:\Study\node_essentials\ch09\nodebird\node_modules\oauth\lib\oauth2.js:134:9)
at IncomingMessage.<anonymous> (D:\Study\node_essentials\ch09\nodebird\node_modules\oauth\lib\oauth2.js:157:7)
at IncomingMessage.emit (events.js:322:22)
at endReadableNT (_stream_readable.js:1187:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)

로컬로 회원가입후 로그인 누르면 계속 이 에러가 납니다.
User.find is not a function
TypeError: User.find is not a function
at Strategy._verify (D:\Study\node_essentials\ch09\nodebird\passport\localStrategy.js:12:33)
at Strategy.authenticate (D:\Study\node_essentials\ch09\nodebird\node_modules\passport-local\lib\strategy.js:90:12)
at attempt (D:\Study\node_essentials\ch09\nodebird\node_modules\passport\lib\middleware\authenticate.js:366:16)
at authenticate (D:\Study\node_essentials\ch09\nodebird\node_modules\passport\lib\middleware\authenticate.js:367:7)
at D:\Study\node_essentials\ch09\nodebird\routes\auth.js:47:5
at Layer.handle [as handle_request] (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\layer.js:95:5)
at next (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\route.js:137:13)
at exports.isNotLoggedIn (D:\Study\node_essentials\ch09\nodebird\routes\middlewares.js:11:5)
at Layer.handle [as handle_request] (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\layer.js:95:5)
at next (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\layer.js:95:5)
at D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:281:22
at Function.process_params (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:335:12)
at next (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:275:10)
at Function.handle (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:174:3)
at router (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:47:12)
at Layer.handle [as handle_request] (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:317:13)
at D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:284:7
at Function.process_params (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:335:12)
at next (D:\Study\node_essentials\ch09\nodebird\node_modules\express\lib\router\index.js:275:10)


문제가 뭔지 봐주실수있을까요?
3달 전
User.findOne으로 바꾸세요. sequelize4에서 5로 업데이트되었습니다.
3달 전
아 그렇군요.

일단 모든 user.find 를 user.findOne으로 바꿨는데요. 다른 에러가 났습니다. 스택오버플로우 등을 참고해도 만만치 않아 에러 보여드립니다.

Data too long for column 'nick' at row 1
SequelizeDatabaseError: Data too long for column 'nick' at row 1
at Query.formatError (D:\Study\node_essentials\ch09\nodebird\node_modules\sequelize\lib\dialects\mysql\query.js:244:16)
at Execute.handler [as onResult] (D:\Study\node_essentials\ch09\nodebird\node_modules\sequelize\lib\dialects\mysql\query.js:51:23)
at Execute.execute (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\commands\command.js:30:14)
at Connection.handlePacket (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\connection.js:417:32)
at PacketParser.onPacket (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\connection.js:75:12)
at PacketParser.executeStart (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\connection.js:82:25)
at Socket.emit (events.js:310:20)
at addChunk (_stream_readable.js:286:12)
at readableAddChunk (_stream_readable.js:268:9)
at Socket.Readable.push (_stream_readable.js:209:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23)


models/user.js 에 정의 되어있는 nick의 DataTypes.string(숫자) 의 숫자를 아무리 늘려보아도 에러가 계속됩니다.

위의 에러는 브라우저에 명시된것이고 이것은 콘솔의 일부입니다.

name: 'SequelizeDatabaseError',
parent: Error: Data too long for column 'nick' at row 1
at Packet.asError (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\packets\packet.js:712:17)
at Execute.execute (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\commands\command.js:28:26)
at Connection.handlePacket (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\connection.js:417:32)
at PacketParser.onPacket (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\connection.js:75:12)
at PacketParser.executeStart (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (D:\Study\node_essentials\ch09\nodebird\node_modules\mysql2\lib\connection.js:82:25)
at Socket.emit (events.js:310:20)
at addChunk (_stream_readable.js:286:12)
at readableAddChunk (_stream_readable.js:268:9)
at Socket.Readable.push (_stream_readable.js:209:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
code: 'ER_DATA_TOO_LONG',
errno: 1406,
sqlState: '22001',
sqlMessage: "Data too long for column 'nick' at row 1",
sql: 'INSERT INTO `users` (`id`,`nick`,`provider`,`snsId`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?,?,?,?);',

일반 로그인 구현은 잘 됩니다.

이 프로젝트 자체의 흐름을 파악하려고 노력중인데 쉽지않네요. 많이 부족함을 느낍니다.. 에러 체크 부탁드려요!
3달 전
시퀄라이즈 모델을 바꾼다고 디비에 바로 반영되지 않습니다. 디비에 직접 접근하여 nick의 varchar 길이를 바꿔주어야합니다~
3달 전
늘 그랬지만 정말 황당한 곳에서 실수를 발견했습니다.

몽구스도 안썼는데 몽고 캠퍼스에서 nodebird 테이블을 계속 찾다가.. 뭔가 이상해서 워크벤치 갔더니 예전에 있던 nodebird 테이블이 있어서 이번 프로젝트 테이블 생성이 안되었더군요...

역시나 nick의 varchar를 늘려주었더니.. 잘됩니다. 휴.. 감사합니다
3달 전
11과에서 웹소켓으로 채팅방 만드는 실습중에 있습니다.

교재에서 작성해주신대로 app.js의 마지막 부분은
webSocket(server, app, sessionMiddleware);

상기와 같이 작성하였으나 실행하려하면 아래의 에러메시지가 뜨면서 서버 연결자체가 안되고 있습니다.

처음에는 코드를 오타낸줄알고 깃허브에 있는걸 그대로 갖다붙였는데도 똑같은 오류가 뜨면서 아예 작동이 안되더라고요...
저 밑에 server 부분을 Server으로 바꿔보기도하고 별의별 짓을 다했는데도 뭐가 문제인지 도저히 모르겠습니다.

C:\Users\USER\OneDrive - knou.ac.kr\node.js_workspace\gif-chat\app.js:68
webSocket(server, app, sessionMiddleware);
^

ReferenceError: server is not defined
at Object.<anonymous> (C:\Users\USER\OneDrive - knou.ac.kr\node.js_workspace\gif-chat\app.js:68:11)
at Module._compile (internal/modules/cjs/loader.js:1133:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
at Module.load (internal/modules/cjs/loader.js:977:32)
at Function.Module._load (internal/modules/cjs/loader.js:877:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47

[nodemon] app crashed - waiting for file changes before starting...
3달 전
server is not defined라는 것은 말 그대로 server 변수를 안 만드신 겁니다. app.js 68번 째 줄보다 위에서 server를 선언하셨나요?
3달 전
안녕하세요, 교재와 유튜브 영상보고 좋아요 기능과 게시글 삭제까지 따라해 보았습니다! 하지만 구현하는 과정에서 해시태그 검색을 하게되면 로그인 화면으로 돌아가는데 무슨 문제인지 모르겠습니다ㅜㅜ
오류메시지는
GET /post/hashtag?hashtag=%EC%82%BC%EC%84%B1 500 232.058 ms - 1048 라고 뜹니다ㅜㅜ
3달 전
500 에러가 뜨는 건 서버쪽에서 에러가 있다는 뜻입니다. 서버 에러 로그를 확인햐보세요
3달 전
콘솔창에는 에러가 안뜨는데 따로 볼 수 있는 방법이 있나요??
3달 전
네 같습니다! 원래 해시태그검색이 잘 되다가 좋아요기능을 추가하고 난 뒤에 안되기 시작했습니다.
3달 전
안녕하세요 이번에 책을 사서 공부해보고 있는데, 365p에 sequelize db:create 명령어를 입력하니 계속 오류메시지가 발생하여 문의드립니다.

config.json 파일에 db 연결하는 부분 하고있는데... password 부분에 계속 비밀번호를 올바르게 적었는데

ERROR: Access denied for user 'root'@'localhost' (using password: NO)

이런 오류메시지가 뜨면서 DB가 생성되지 않고 있습니다... MySQL 에디터에서 열심히 찾아보고는 있는데 도저히 답이 안나와서 문의드립니다.
3달 전
npx sequelize db:create 해보세요. 그리고 development 안에 password 적으신 것 맞죠?
3달 전
해결했습니다 ㅠㅠ 희한하게 다른 컴퓨터로 똑같이 진행하니까 되네요..
4달 전
9장 스스로 해보기 전까지 완료를 한 상태에서 갑자기 이런 에러가 발생하였습니다. 이전까지는 책대로 잘 나왔는데 갑자기 main.pug 부분에서 이런 에러가 나옵니다. 어떻게 수정해야 할까요? 23번줄 value=twit.user.id에서 value=twit.id로 수정하면 나오기는 하는데 트윗글에 닉네임같은건 나오지 않습니다.

for twit in twits
22| .twit
> 23| input.twit-user-id(type='hidden' value=twit.user.id)
24| input.twit-id(type='hidden' value=twit.id)
25| .twit-author= twit.user.nick
26| -const follow = user && user.Followings.map(f => f.id).includes(twit.user.id);

Cannot read property 'id' of null
at eval (eval at wrap (/Users/beomju/workspace/node-project/nodebird/node_modules/pug-runtime/wrap.js:6:10), <anonymous>:164:113)
at eval (eval at wrap (/Users/beomju/workspace/node-project/nodebird/node_modules/pug-runtime/wrap.js:6:10), <anonymous>:231:4)
at template (eval at wrap (/Users/beomju/workspace/node-project/nodebird/node_modules/pug-runtime/wrap.js:6:10), <anonymous>:405:120)
at Object.exports.renderFile (/Users/beomju/workspace/node-project/nodebird/node_modules/pug/lib/index.js:427:38)
at Object.exports.renderFile (/Users/beomju/workspace/node-project/nodebird/node_modules/pug/lib/index.js:417:21)
at View.exports.__express [as engine] (/Users/beomju/workspace/node-project/nodebird/node_modules/pug/lib/index.js:464:11)
at View.render (/Users/beomju/workspace/node-project/nodebird/node_modules/express/lib/view.js:135:8)
at tryRender (/Users/beomju/workspace/node-project/nodebird/node_modules/express/lib/application.js:640:10)
at Function.render (/Users/beomju/workspace/node-project/nodebird/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/Users/beomju/workspace/node-project/nodebird/node_modules/express/lib/response.js:1012:7)
at /Users/beomju/workspace/node-project/nodebird/routes/page.js:28:11
at tryCatcher (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:729:18)
at Promise._fulfill (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:673:18)
at Promise._resolveCallback (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:466:57)
at Promise._settlePromiseFromHandler (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:559:17)
at Promise._settlePromise (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/Users/beomju/workspace/node-project/nodebird/node_modules/bluebird/js/release/promise.js:729:18)
3달 전
twit.user && twit.user.id로 바꾸세요. 이렇게 하면 나오긴 하겠지만 애초에 트윗 저장할 때부터 잘못 저장하셨을 확률이 높습니다.
5달 전
learn-sequelize 강의에서 sequelize init 이후 sequelize db:create 실행시 ERROR: Dialect undefined does not support db:create / db:drop commands 오류가 발생합니다.
5달 전
config/config.json의 dialect가 mysql이 맞나요? npx sequelize db:create 해보세요.
5달 전
안녕하세요 현재 노드 교과서로 공부 중입니다. 페이지 254쪽에서 mysql 콘솔창에 해당 명령어를 다 입력을 했습니다.ERROR 1049 (42000): Unknown database 'nodejs' 라는 오류가 먼저 뜹니다. 해당 명령어에 대해서 구글링을 했는데, create database nodejs 라던지, show databases;를 통해 어떤 데이터베이스가 있는지를 확인했지만, 각각, 앞의 명령어는 먹히지 않는 거 같았고, 뒤에 명령어를 치면 nodesjs라는 데이터가 없었습니다.
어떻게 해야 교재처럼 query Ok,~~~ 같은 출력문을 볼 수 있을까요?
5달 전
create database nodejs; 하시면 뭔 메시지가 나오나요? 세미콜론은 붙이셨나요?
5달 전
node교과서 908p-911p에 models/index.js 부분에 관한 질문입니다.
db.User.hasMany(db.Auction); // 사용자가 입찰을 여러번 가능
db.Good.hasMany(db.Auction); // 한 상품에 여러 명이 입찰 가능
이 두개는 이해가 되는데, 그 밑에
db.Auction.belongsTo(db.User);
db.Auction.belongsTo(db.Good);
이걸 굳이 또 넣으신 이유가 뭘까요 ? ㅠㅠ 똑같은말. .아닌가요 ? 도저히 답을 모르겠어서 질문드립니다...
5달 전
belongsTo가 더 중요합니다. belongsTo를 하면 Auction 테이블에 UserId와 GoodId가 생깁니다. 반대로 hasMany를 하는 이유는 User를 통해서 Auction을 불러올 수 있게 하기 위해서입니다. 즉 hasMany랑 belongsTo를 둘 다 설정해줘야 양방향으로 서로가 서로를 불러올 수 있게 됩니다.
5달 전
node 교과서 352p에 AJAX로 #img-preview의 src속성에 "/img/${req.file.filename}"값이 대입됩니다. 이때, img 폴더가 public 폴더 아래에 추가되어 있고, 업로드된 이미지가 public/img 폴더에 위치해 있어야 이미지 프리뷰가 가능해지지 않나요? ㅠㅠ 헤메고 있는 중생을 구원해 주소서 ㅠㅠ
5달 전
혹시 끝까지 다 읽으셨나요?? 나중에 업로드 폴더도 static에 추가합니다.
7달 전
13장 실습중이네요 서버를 실행하면 nodemon이 계속 자기 혼자 재시작-시작-재시작-시작 무한 반복하네요. 뭐가 문제인건가요?? 그리고 저는 현재 몽고디비 서버를 실행할 때
sudo brew services start mongodb-community@4.2
를 사용 중인데 이 코드를 사용한 상태면 다음엔 몽고디비 사용 시 매번 저 코드를 입력할 필요가 없는거죠?
7달 전
뭔가 시작 과정에서 자꾸 어떤 파일이 바뀌어서 재시작되는 것 같습니다. 일단 제 깃헙 코드를 사용해보세요. brew services start를 하셨으면 다음부터는 입력하실 필요 없습니다.
7달 전
안녕하세요! 항상 블로그 잘 보고있습니다. 한가지 궁금한게 제가 Node.js 교과서를 구입하였는데 늦게나마 공부하려고 합니다... 근데 문득 생각난게 집필당시의 버전이랑 요즘 버전에서 차이가 많이 난다면 개정판을 기다렸다가 사서 보는게 더 나을까 해서 질문드려요, 얼핏 알기로는 React 같은경우는 예전 책에없는 v2나 hook 등등 바뀐게 좀 있다고 들어서.. (잘몰라요;;) 혹시 Node도 그런가해서 질문드려요!
7달 전
노드는 상대적으로 변화가 적습니다. 개정판은 적어도 6개월 이상 소요됩니다. 개정판의 주요 목표는 설명을 쉽게 하는 거지, 새로운 내용은 별로 없습니다.
7달 전
밑 글 질문자입니다. socket.request를 찍어본 결과 session정보가 MemoryStore라는 곳에 있고 socekt.request.session에 존재하지 않습니다. MemoryStore에 있어 접근이 되지 않는데 어떻게 해결하나요
7달 전
socket.request.session이 undefined가 되는 경우이기 때문에 session을 찍어보실 필요는 없고 url이나 socket.id같은 부가 정보를 찍어보셔야 합니다.
7달 전
안녕하세요.

socket.io를 이용한 실시간 채팅 구현을 하던 중 문제가 생겨 질문드립니다.

socket.io와 express-session 연동을 위해 다음과 같이 코드를 작성하였습니다.
io.use((socket, next) => {
sessionMiddleware(socket.request, socket.request.res, next);
});

그런데 req.session.user에 저장한 별도의 정보가 제대로 전달이 될 때가 있지만, 가끔씩 undefined가 뜨는 경우가 있습니다.
해결법을 찾아봐도 모르겠어 질문 올립니다.
7달 전
그 상황을 찾아보려면 undefined가 뜰 때 socket.id나 socket.reuqest같은 것, socket.request.url 이런것도 함께 찍어보셔야할 것 같습니다.
9달 전
안녕하세요.
책을 읽으면서 궁금한점이 있어 질문합니다.

교제 chapter 12 실시간 경매 시스템(p.487) 만들기를 구현하면서 model간의 관계를 정의할 때,
```
db.Good.belongsTo(db.User, { as: "owner" });
db.Good.belongsTo(db.User, { as: "sold" });
db.User.hasMany(db.Auction);
db.Good.hasMany(db.Auction);
db.Auction.belongsTo(db.User);
db.Auction.belongsTo(db.Good);
```
아래와 같이 작성했는데 user 모델과 good 모델의 역관계를 설정하지 않은 이유가 있나요?
`Ex. db.User.hasMany(db.Good, { as: "soldItems" });`

주변에 친구가 orm에 작성할 때, 관계를 많이 잡아 놓으면 안좋다는 이야기를 들었는데 맞는 이야기일까요? 제 생각에는 확실히 맞는 관계라고 하면 관계를 잡아놓아도 큰 문제가 없다고 생각하는데 어떻게 생각하시나요??

감사합니다.
9달 전
저 관계는 include를 할 때에만 필요합니다. include를 하지 않으면 관계 설정은 필요 없습니다. 관계를 많이 잡아 놓아도 큰 문제는 없어보입니다.
9달 전
답변 감사합니다.
10달 전
안녕하세요. 제로님.

궁금한 점이 있어 글 남깁니다.

제가 궁금한것은 다음과 같습니다.


1. 특정 시간에 DB 작업을 하는 경우(CRUD)

만약 위와 같은 사항일 경우 일반적으로 책의 내용 중 하나인 노드 스케줄러를 사용하나요?

더불어 매일 정각 24시에 특정 작업을 해야 한다며 노드 서버 외에 별도의 노드 프로그램을 실행시켜주는 것이 안전할까요.

궁금합니다!
10달 전
node-sheduler보다는 운영체제 상에서 돌아가는 crontab을 사용하는 게 좋습니다.
10달 전
교재를 이용해서 웹사이트를 만들고 있는 중입니다. 그런데 multer 모듈을 이용해서 이미지 업로드를 구현하고 있는데 이미지가 웹페이지에 나타날 때 브로큰 이미지 형태로 나타납니다...src=twits.img 이부분이 잘못된 걸까요?? 왜 img/${req.file.filename}형태로 해야되는지 이해가 되지않습니다..ㅜ
일 년 전
교재의 mysql부분 공부중인데 sequelize 이용해서 mysql이랑 express 랑 연결하는 부분 실습중인데요, 교재상으로는 276페이지에서 npm start를 하면

(node:9628) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.

이러한 메세지가 계속 뜨네요
테이블도 삭제해서 없는데 생성되는 SQL문도 안나오고 뭐가 원인인지 모르겠네요
구글링해도 뭔지 모르겠고 답답합니다 ㅜ 도와주세요

model에 user index comment 모두 그냥 복붙하고, config도 그대로 복붙해서 실행하는데도 안되요 ㅜㅜ
일 년 전
저 메시지는 에러 메시지가 아닙니다. 단순한 경고메시지라서 무시해도 됩니다. 다른 에러메시지가 있을 거에요.
일 년 전
144p 실습중에 TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Set-Cookie"] 에러가 발생합니다.




8080번 포트에서 서버 대기중입니다
_http_outgoing.js:464
throw err;
^

TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Set-Cookie"]
at storeHeader (_http_outgoing.js:411:5)
at processHeader (_http_outgoing.js:406:3)
at ServerResponse._storeHeader (_http_outgoing.js:312:9)
at ServerResponse.writeHead (_http_server.js:271:8)
at Server.http.createServer (c:\Users\illke\Desktop\Nodejs\server2.js:25:17)
at Server.emit (events.js:198:13)
at parserOnIncoming (_http_server.js:677:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)


어떻게해야할까요...
일 년 전
아래 댓글 참조해주세요.
일 년 전
말씀하신대로 Console.log(encodeURIComponent(name))을 수행했고, 로그인시 입력한 Name대로 잘 찍힙니다.


https://thebook.io/006982/ch04/02-08/

혹시 오타가 있나 싶어서 더북에있는 원문을 긁어서 붙여넣기하고 돌려봤습니다만 여전히 에러가 나네요.




c:\Users\illke\Desktop\Nodejs>node server4
8083번 포트에서 서버 대기 중입니다!
_http_outgoing.js:464
throw err;
^

TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Set-Cookie"]
at storeHeader (_http_outgoing.js:411:5)
at processHeader (_http_outgoing.js:406:3)
at ServerResponse._storeHeader (_http_outgoing.js:312:9)
at ServerResponse.writeHead (_http_server.js:271:8)
at Server.http.createServer (c:\Users\illke\Desktop\Nodejs\server4.js:25:13)
at Server.emit (events.js:198:13)
at parserOnIncoming (_http_server.js:677:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)

c:\Users\illke\Desktop\Nodejs>
일 년 전
잘 찍힌다는 것은 한글 닉네임은 아니란 말씀이시죠? 혹시 다른 쿠키데이터중에도 한글같은 게 있나요? 브라우저에서 쿠키 지우기를 하고 다시 시도하는 것도 방법입니다. 분명 쿠키 문자중에 ASCII가 아닌 문자가 있는것 같습니다.
일 년 전
닉네임은 na123을 사용했고, 쿠키 지우고 다시 시도해봤습니다만 아직도 에러가 나네요..

조금만 더 해보고 안되면 그냥 넘어가려고 합니다.
일 년 전
혹시 전 원문에 Expires 앞에 줄바꿈까지 그대로 하셨나요? 줄바꿈이 있으면 안 됩니다. 저 부분은 책에 공간이 부족해서 다음 줄로 밀려난 거에요.
일 년 전
줄바꿈때문이네요...감사합니다 해결했습니다
일 년 전
162페이지의 실습 중, TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Set-Cookie"] 라는 에러가 나왔습니다. 해당 코드를 작성하다가
'Set-Cookie': `name=${encodeURIComponent(name)};
Expires=${expires.toGMTString()}; HttpOnly; Path=/`
문법 오류가 나서 set-cookie를 백틱을 사용했는데 실행해보니 저런 오류가 나옵니다....ㅠ 어떻게 해야 할까요
일 년 전
encodeURIComponent(name) 이 부분을 console.log로 찍어보세요. 여기 글자가 오류인 것 같습니다.
일 년 전
제로님. 궁금한점이 있습니다.

1. 28p 질문

해당 페이지에서 블로킹방식의 코드를 작성하는데 왜이렇게 작동하는지 궁금합니다.

console.log 는 콘솔 객체의 로그라는 메서드를 사용하는걸로 알고 있습니다.

그렇다면 log도 함수라는 이야기 아닌가요?

만약 맞다면 호출스택은 후입선출이기때문에 다음의 결과가 먼저 나와야 되는것 아닌가해서요.

console.log('다음 작업')

호출 순서대로 쌓이고 실행은 역순으로 실행되는게 아닐까요?

궁금하고 많이 헷갈리네요.

2. 112p 질문

해당 페이지의 동기와 비동기, 블로킹과 논블로킹 설명 내용에서 비동기-논블로킹 방식에서는 호출한 함수가 바로 return 처리 된다는 말이 어떤말일까요. 정확히 어떤걸 return(반환) 한다는건지 모르겠습니다.
일 년 전
함수가 실행이 종료되지 않은채 다음 함수가 호출되는 경우에만 호출스택에 쌓입니다.

논블로킹에서 함수가 바로 리턴된다는 것은 콜백이 실행되지 않아도 현재 함수가 종료된다는 뜻입니다.
일 년 전
안녕하세요. 지금 chapter 9 공부 중인데 p353 에서 profile.pug의 user.Following이라던지 p.352에서 main.pug의 twit.user.nick 등 온점(.) 뒤에 오는 Following이나 user.nick은 어디서 정의가 되어있는건가요? 저걸 뭐라고 부르나요? 저게 존재하는지 어떻게 알 수 있는건가요?
감사합니다.
일 년 전
저도 그 부분이 헷갈렸는데 routes의 page.js 에서
res.render('main', {
title: 'NodeBird',
twits: posts,
user: req.user,
에서 posts가 main.pug의 twits로 넘어가는 것 같더라고요. posts를 console.log(`posts= ${JSON.stringify(posts)}`); 해서 찍어보시면 보낸 쿼리 결과가 json형태로 전달받고 있는걸 볼 수 있습니다. 마찬가지로 Following 이나 user.nick도 찍어보면 db 테이블의 컬럼 이름입니다.
일 년 전
안녕하세요. 책 너무 잘 읽고 있습니다. sns만들어보는 예제를 따라해보니 팔로잉하는 유저의 트윗만 보이는게 아니라 모든 계정에서 모든 트윗이 보이는 식으로 구현되어 있는 거 같습니다. 팔로잉하는 유저의 트윗만 볼 수 있도록 수정을 해보려고 하는데 막혀서 질문드리고 싶습니다.

SELECT *
FROM nodebird.posts, nodebird.follow
WHERE nodebird.follow.followingid = nodebird.posts.userid
&& nodebird.follow.followerId = (req.user.id);

같은 느낌의 쿼리를 쓰려고 하는데 시퀄라이즈로 어떻게 표현해야할지 막막하네요. users나 posts 테이블 같은 경우에는 모듈로 받아와서 User.findAll() Post.findAll() 할 수 있는데 follow테이블 같이 직접 생성한게 아니라 n:m 관계를 통해서 생성된 테이블들은 어떻게 접근해야 할까요.
일 년 전
쿼리를 어떻게 써야할 지 모르실 때는 db.sequelize.query(QUERY)로 직접 SQL 쓰시면 됩니다.
일 년 전
chapter6에서 npm start 부분에 에러가 나고 있습니다.
구글링을 해서 다른 사람들이 말한대롤 설치도 다시 해봣는데도 같은 문제로 몇시간째 끙끙대고 있습니다.
뭐가 문제일까요?ㅠㅠㅠ

> learn-sequelize@0.0.0 start /Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize
> node ./bin/www

internal/modules/cjs/loader.js:798
throw err;
^

SyntaxError: /Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/config/config.json: Unexpected token } in JSON at position 196
at JSON.parse (<anonymous>)
at Object.Module._extensions..json (internal/modules/cjs/loader.js:795:27)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:690:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/models/index.js:5:16)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:690:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/app.js:9:17)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:690:17)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! learn-sequelize@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the learn-sequelize@0.0.0 start 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! /Users/jiyoonkim/.npm/_logs/2019-07-16T01_13_15_847Z-debug.log
일 년 전
config/config.json에 오타가 있다고 나오네요. 에러메시지를 잘 보시면 에러의 원인을 알 수 있습니다
일 년 전
config에 } syntax error가 있다고 떠서 봤었는데 {} 다 수가 맞아요ㅠ 그리고 깃헙에 올려놓으신 자료 그대로 카피해서 붙여넣어도 봤는데 그때는 이런 에러가 뜨더라구요.
> learn-sequelize@0.0.0 start /Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize
> node ./bin/www

(node:84998) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.
Unhandled rejection SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at Promise.tap.then.catch.err (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:133:19)
at tryCatcher (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/promise.js:517:31)
at Promise._settlePromise (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/promise.js:574:18)
at Promise._settlePromise0 (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/promise.js:619:10)
at Promise._settlePromises (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/promise.js:695:18)
at _drainQueueStep (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/async.js:138:12)
at _drainQueue (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/async.js:131:9)
at Async._drainQueues (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (/Users/jiyoonkim/Desktop/javascript/nodejs/zerocho/chapter6/learn-sequelize/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)




그래서 operatorsAlias 라인만 지웠을때도 처음에 나왔던 syntax }가 뜨구요ㅠㅠ
일 년 전
이건 다른 에러입니다. MySQL 5.7을 설치하세요. 8버전을 설치한다면 책 내용을 그대로 따라하셔야 합니다.
일 년 전
자꾸 질문해서 죄송한데요ㅠ 5.7 설치되어 있어요. 안되서 8도 해봤는데 안되구요. 진도를 나가야하는데 여기서 막혀버리니 답답하네요ㅠ 에러가 저 두개 중 하나씩 번갈아 나네요.
일 년 전
이 경우에는 https://github.com/ZeroCho/nodejs-book/issues/45 참조하세요. 만약 안 된다면 MySQL 삭제 후 재설치 하시고 다시 저 링크대로 해보세요.
일 년 전
헐헐헐 돼요 이제 돼요!!!ㅠㅠㅠㅠ 정말 감사합니다
일 년 전
그리고 혹시 operatorAliases 지울 때 위에 dialect: "mysql", 여기 콤마도 지우셨나요? 콤마 있으면 안 됩니다.
일 년 전
multer모듈로 이미지와 게시글을 업로드하는 부분에서 이미지가 이미지 아이콘형태로 출력됩니다 원본 이미지 형태로 안나오고요 이 부분은 에러 메시지도 안나오네요 ㅜㅜ
일 년 전
이미지 아이콘이 어떤 거죠?
일 년 전
https://www.google.com/imgres?imgurl=https%3A%2F%2Fctl.s6img.com%2Fsociety6%2Fimg%2FXG0OlNwi-sp-8Dsh8pYRR1HJtGY%2Fw_700%2Fprints%2F~artwork%2Fs6-original-art-uploads%2Fsociety6%2Fuploads%2Fmisc%2F58b052f474184211b7fcb694e0888c2a%2F~~%2Fgoogle-chrome-broken-image-prints.jpg%3Fwait%3D0%26attempt%3D0&imgrefurl=https%3A%2F%2Fsociety6.com%2Fproduct%2Fgoogle-chrome-broken-image_print&docid=k5N2UEG0i7QuwM&tbnid=M_-c-LKpTHBQ3M%3A&vet=10ahUKEwie2ovO1LPjAhVXxIsBHUBQB_sQMwhDKAMwAw..i&w=700&h=700&hl=ko&bih=917&biw=1295&q=broken%20img&ved=0ahUKEwie2ovO1LPjAhVXxIsBHUBQB_sQMwhDKAMwAw&iact=mrc&uact=8
링크 주소를 적어놨습니다. 찾아보니 브로큰 이미지라 부르네요. 업로드 시 브로큰 이미지로 출력이 됩니다.
10달 전
혹시 어떻게 해결하셨나요??ㅠㅠ 저도 같은 문제인데..
10달 전
static 미들웨어 설정이 제대로 되어있는지 확인해보세요. upload 폴더를 가리켜야 합니다.
일 년 전
문제 해결했는데 댓글 삭제 기능이 안되네요 질문이 유익하지 않아서 지울려했는데....