๋ฐ˜์‘ํ˜•

๊ฐœ๋ฐœ ๐Ÿพ 64

mongooseerror: model.findone() no longer accepts a callback

ํŠน์ •๊ฐ•์˜๋ฅผ ๊ทธ๋ƒฅ ๋”ฐ๋ผํ•˜๊ฒŒ๋˜๋ฉด mongooseerror: model.findone() no longer accepts a callback ์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ• ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ฐพ์•„๋ณด๋‹ˆ mongoose findOne ํ•จ์ˆ˜์—์„œ ๋”์ด์ƒ ์ฝœ๋ฐฑํ•จ์ˆ˜ ๋ฐฉ์‹์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด๋ฅผ async/await ์œผ๋กœ ๊บผ๋‚ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.  // ๊ธฐ์กด ์—๋Ÿฌ๊ฐ€ ๋‚˜๋˜ ๋ฐฉ์‹User.findOne({ userId: userId.toLocaleLowerCase(), }, (err, user) => { if(err) return done(err); if(!user) { return done(null, false, {message:..

JavaScript ๋ฐฐํฌํ›„ copy ์•ˆ๋˜๋Š” ๋ฌธ์ œ

๋งํฌ๊ณต์œ ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ๋งํฌ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์€๊ทผํžˆ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”. ์ด๋ฅผ ๊ตฌํ˜„ํ• ๋•Œ ์˜ˆ์ „์—๋Š” execCommand ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์“ฐ๋‹ค๊ฐ€ deprecated ๋˜๊ณ ๋‚˜์„œ (๋ฆฌ์•กํŠธ ํ™˜๊ฒฝ) navigator.clipboard.writeText ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์“ฐ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.  ๊ทธ๋Ÿฐ๋ฐ ๋ถ„๋ช… local ์—์„œ ์ž˜ ๋™์ž‘๋˜๋‹ค๊ฐ€ ๊ฐœ๋ฐœ ์„œ๋ฒ„์— ๋ฐฐํฌ๋งŒ ํ•˜๋ฉด ๋ณต์‚ฌ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.  ๋ณดํ†ต ๊ฐœ๋ฐœ์„œ๋ฒ„๋Š” https ๊ฐ€ ์•„๋‹Œ http๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ณด์•ˆ ์ •์ฑ…์— ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™๋”๋ผ๊ตฌ์š”.  ์ฐธ์กฐ: https://stackoverflow.com/questions/51805395/navigator-clipboard-is-undefined๊ทธ๋ž˜์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด https ํ™˜๊ฒฝ์ผ๋•Œ๋งŒ ์•ˆ์ •์ ์ธ navigat..

nextjs _app.js useEffect์—์„œ ๋‘๋ฒˆ ํ˜ธ์ถœ ํ•˜๋Š” ๋ฌธ์ œ

์ฐธ๊ณ : https://dev.to/jahid6597/why-useeffect-is-running-twice-in-react-18c6 React18 ๋ฒ„์ „์ดํ›„ StrictMode์ผ๋•Œ useEffect ๊ฐ€ ๋‘๋ฒˆ์”ฉ ํ˜ธ์ถœ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, next.config.js ์—์„œ strictMode๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋‹ค.  // next.config.jsconst nextConfig = { reactStrictMode: false,}

๊ฐœ์ธ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ๊นŒ์ง€ ์™„๋ฃŒ ํ›„๊ธฐ

์›น ๊ฐœ๋ฐœ์ž๋กœ์จ ํšŒ์‚ฌ์—์„œ ์ผํ•˜๋Š” ๊ฒƒ๋„ ์ฆ๊ฒ์ง€๋งŒ(์ •๋ง?!) ๊ฐœ์ธ์ ์œผ๋กœ ๋ˆ, ์ŠคํŽ™, ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜๋„ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์˜ค๋กœ์ง€ ๋‚ด๊ฐ€ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒƒ๋“ค์„ ์žฌ๋ฏธ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์š•์‹ฌ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹œ์ž‘ํ•œ "์กฐํ† ๋ผ์•„์ผ€์ด๋“œ ํ”„๋กœ์ ํŠธ". ๐Ÿฐ ์ œ๋ชฉ์ฒ˜๋Ÿผ ์žฌ๋ฏธ์™€ ์ฆ๊ฑฐ์›€๋งŒ ์กด์žฌํ•˜๋Š” ์•„์ผ€์ด๋“œ ์ปจ์…‰์ž…๋‹ˆ๋‹ค. ์šฐ์„  1์ฐจ๋กœ ๋งŒ๋“  ์„œ๋น„์Šค๋Š” ๊ฒŒ์ž„2๊ฐœ์™€ ๋žœ๋ค์„ ์†Œ์žฌ๋กœํ•œ ์„œ๋น„์Šค 1๊ฐœ ์ž…๋‹ˆ๋‹ค. React๋กœ ๊ฐœ๋ฐœ์„ ํ• ์ง€, ๊ทธ๋ƒฅ javascript๋กœ ํ• ์ง€ ๊ณ ๋ฏผ์ด ๋งŽ์•˜๋Š”๋ฐ, ์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์„œ๋น„์Šค๋“ค์€ ๋„ˆ๋ฌด ๋‹จ์ˆœํ•œ ๊ฒƒ๋“ค์ด์—ฌ์„œ react๋Š” ์˜ค๋ฒ„์ŠคํŽ™์ด๋ผ๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค. ํ˜น์—ฌ๋ผ๋„ ์ถ”ํ›„ ์„œ๋น„์Šค๊ฐ€ ์ปค์ง„๋‹ค๋ฉด, ๋ฆฌ์•กํŠธ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๋‹ˆ๊น์š”. ์ธ๋‹จ, ๊ฐ€๋ณ๊ฒŒ ์‹œ์ž‘ํ•ด ๋ณด๋Š”๊ฑธ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. 1. ๊ฐ•๊ฑด๋„ˆ๊ธฐ ๊ฒŒ์ž„ ์–ด๋ ธ์„์  ํ’€์–ด๋ดค์„ ๊ทธ ์œ ๋ช…ํ•œ ๊ฐ•๊ฑด๋„ˆ๊ธฐ ๊ฒŒ์ž„์ž…..

์‹œ์Šคํ…œ scroll ์ปค์Šคํ…€ ํ•˜๊ธฐ

์›น์‚ฌ์ดํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์Šคํฌ๋กค๋ฐ”๋Š” ์ค‘์š”ํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI) ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋ณธ ์Šคํฌ๋กค์€ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์š”์ฆ˜์€ ์Šคํฌ๋กค์˜ ๋””์ž์ธ๋„ ๋งŽ์ด ๊ณ ๋ ค๋˜์„œ ๋‚˜์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์Šคํฌ๋กค์€ ์–ด๋–ป๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๋ฉด๋ ๊นŒ์š”~? ::scroll ์ด๋ผ๋Š” ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ์˜์™ธ๋กœ ๊ฐ„๋‹จ ํ•˜๋‹ต๋‹ˆ๋‹ค. .scroll { &::-webkit-scrollbar { width: 7px; height: 7px; } &::-webkit-scrollbar-track { background: transparent; } &::-webkit-scrollbar-thumb { background: #3c3c3c; border-radius: 45px; } &::-webkit-scrollbar-thu..

mac ์—์„œ rbenv install ์—๋Ÿฌ ํ•ด๊ฒฐ : ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

mac ์—์„œ react-native ํ™˜๊ฒฝ ์„ธํŒ… ๊ณผ์ •์—์„œ rbenv ๋ฅผ ์„ค์น˜ํ•ด์•ผํ•˜๋Š”๋ฐ, rbenv ๊นŒ์ง€ ์„ค์น˜ ์ดํ›„ bundler๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚ฌ๋‹ค. ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory. ๊ฒ€์ƒ‰ ๋์— ์ฐพ์€ ๋ฐฉ๋ฒ•์€ ์„ค์น˜์ดํ›„ .zshrc ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค. ใ…Ž vim ~/.zshrc // .zshrc ํŒŒ์ผ ์—ด๊ธฐ // ํ•ด๋‹น ํŒŒ์ผ์—์„œ ์•„๋ž˜ ์ฝ”๋“œ ์ถ”๊ฐ€ (์ถ”๊ฐ€: i, ์ €์žฅ+๋‹ซ๊ธฐ๋Š” : wq) [[ -d ~/.rbenv ]] && \ export PATH=${HOME}..

Axios ๋กœ ํŒŒ์ผ๊ณผ JSON ํŒŒ์ผ ๋™์‹œ์— ๋„˜๊ธฐ๊ธฐ

๋ณดํ†ต ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ๊ตฌํ˜„ํ• ๋•Œ Event ๋กœ ํŒŒ์ผ์„ ๋ฐ›์€ ํ›„ formData์— ๋‹ด์•„์„œ multipart ๋กœ ๋ณด๋‚ธ๋‹ค. const files = e.target.files; const formData = new FormData(); for (let file of files) formData.append('file', file); // ํ˜น์€ formData.append('file', file[0]); ๊ฐ„ํ˜น ํŒŒ์ผ ์ด์™ธ์— ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ๋•Œ์—๋„ formData๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค. ... const fileInfo = "user_type"; formData.append('type', fileInfo); ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ Object ํƒ€์ž…์„ ๋ณด๋‚ด์•ผํ•  ๋•Œ๋Š” ์–ด๋–จ๊นŒ? ๊ธฐ๋‚˜๊ธด ์‚ฝ์งˆ+๋„์›€ ๋์— ์ฐพ์€ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ..

node ๋ฒ„์ „์„ ์—ฌ๋Ÿฌ๊ฐœ ์“ฐ๊ณ ์‹ถ๋‹ค๋ฉด NVM์„ ์จ๋ณด์ž

Node.js๋Š” ๋‹ค๋“ค ์•Œ๋‹ค์‹œํŒŒ ์›น ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€์—์„œ JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” JavaScript ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ด์ฃ ? ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์€ NPM์„ ์„ค์น˜ํ•˜์—ฌ node์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด NVM์€ ๋ฌด์—‡์ผ๊นŒ์š”? NVM์€ Node Version Manager์˜ ์•ฝ์ž๋กœ, ์ปดํ“จํ„ฐ์—์„œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Node.js๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. NVM์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํ“จํ„ฐ์˜ ๋‹ค๋ฅธ Node.js ๋ฒ„์ „ ๊ฐ„์— ์‰ฝ๊ฒŒ ์ „ํ™˜ํ•˜๊ณ , ํŠน์ • ๋ฒ„์ „์„ ์„ค์น˜ ๋ฐ ์ œ๊ฑฐํ•˜๋ฉฐ, ๊ธ€๋กœ๋ฒŒ ๋ฐ ํ”„๋กœ์ ํŠธ๋ณ„ Node.js ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ Node.js๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•˜๊ณ , ์‹œ์Šคํ…œ์˜ PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์„œ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅธ ๋ฒ„..

yarn : ์ด ์‹œ์Šคํ…œ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ C:\Program Files\nodejs\yarn.ps1 ํŒŒ์ผ์„ ๋กœ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

1. ๋ฌธ์ œ ๋ฐœ์ƒ yarn ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค. Window ๋‚ด์—์„œ ์ •์ฑ… ์„ค์ •์ด ์ œํ•œ๋˜์–ด์žˆ๋‹ค๋ฉด, yarn๊ฐ™์€ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฏฟ์„ ๋งŒํ•œ ์Šคํฌ๋ฆฝํŠธ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์„ ์•ˆํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŠนํžˆ, .ps1xml, .psm1์„ ๋น„๋กฏํ•œ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ์‹คํ–‰์„ ์ œํ•œํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ณธ๊ฐ’์ด ํด๋ผ์ด์–ธํŠธ์šฉ์€ Restricted, ์„œ๋ฒ„์šฉ์€ RemoteSigned๋กœ ๋˜์–ด์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. 2. ํ•ด๊ฒฐ ๋ฐฉ์•ˆ windows ์—์„œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์ •์ฑ…์„ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. ๋งŒ์•ฝ ํ˜„์žฌ ์ƒํƒœ๊ฐ€ Restricted๋กœ ์ œํ•œ์ด ๋˜์–ด์žˆ๋‹ค๋ฉด, yarn ์—์„œ ์ œ๊ณต ๋˜๋Š” ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰์ด ์•ˆ๋˜๋Š” ๋“ฏ ํ•˜๋‹ค. ์ฆ‰, Restricted ๋ฅผ RemotedSigned ๋กœ ๋ณ€๊ฒฝ ํ•ด์ค€๋‹ค๋ฉด yarn ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค..

๋ฐ˜์‘ํ˜•