๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ 21-2 IPP/Node.js study

Node.js - 12 ์„ค์ •๊ณผ ์—๋Ÿฌ์ฒ˜๋ฆฌ

by hanwitjus 2021. 10. 26.

์˜ค๋Š˜์€ ์ ์ ˆํ•œ ์—๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ–ˆ๋‹ค.

๋ฐ๋ฒ ํ”„๋ž‘ ์†Œ์‹œ๊ฐœ๋•Œ๋„ ์—๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ๊ฑธ ํ–ˆ์—ˆ๋Š”๋ฐ ๋น„์Šทํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ์ด๋‹ค.

 

๋จผ์ € ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์ „์ฒด์ ์ธ ๊ฐœ์š”๋Š”

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ ๋ณ€๊ฒฝ
  2. ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฏธ๋“ค์›จ์–ด ์ƒ์„ฑ
  3. Express.js๋ฅผ ํ†ตํ•œ ์ •์  ํŽ˜์ด์ง€ ์„œ๋น„์Šค

 

package.json ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •

 

๋จผ์ € package.json ์„ค์ •ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ๋‹ค.

 

npm start

npm run start

npm -script start 

 

์ด๋Ÿฐ npm ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

(์‚ฌ์‹ค ์ด๊ฒŒ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ž‘ ๋ญ”์ƒ๊ด€์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ํ•˜๋ผ๋‹ˆ๊นŒ ํ•œ๋‹ค. ํ•˜๋‹ค๋ณด๋ฉด ์ด์œ ๋ฅผ ์•Œ๊ฒŒ๋˜๊ฒ ์ง€ ๋จธ..)

 

package.json ํŒŒ์ผ์˜ script ๋ถ€๋ถ„์— 

"start": "node main.js"๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ!

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„ค์ •ํŒŒ์ผ ์ˆ˜์ • ๋์ด๋‹ค.

 

 

 

์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฏธ๋“ค ์›จ์–ด ์„ค์ •

Express.js์˜ ์—๋Ÿฌ์ฒ˜๋ฆฌ

 

Express.js๊ฐ€ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋‹ค. 

๋จผ์ € ์ฒซ๋ฒˆ์งธ๋Š”

 

1. ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ฝ˜์†”์— ๋กœ๊น…

 

์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € http-status-codes ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  errorController.js ๋ฅผ ์ƒ์„ฑํ•œ ํ›„

์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์ค€๋‹ค.

 

logErrors ํ•จ์ˆ˜๋Š” ๋ณด์ด๋‹ค์‹œํ”ผ error, req, res, next ์ด 4๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค.

์ผ๋ฐ˜ ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜๋ณด๋‹ค ํ•˜๋‚˜ ๋” ๋งŽ์€ ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด, ์š”์ฒญ-์‘๋‹ต ์‚ฌ์ดํด์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฒซ๋ฒˆ์งธ ๋ณ€์ˆ˜(error)์— ์ €์žฅ๋˜๊ณ , error ๊ฐ์ฒด์˜ stack ํŠน์„ฑ์„ console.error๋กœ ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

next ๋ณ€์ˆ˜๋Š” ์ฒด์ธ ๋‚ด์—์„œ ๋‹ค์Œ ํ•จ์ˆ˜ ๋˜๋Š” ๋ผ์šฐํ„ฐ ํ˜ธ์ถœ, ์ข€ ๋” ์ฒ˜๋ฆฌ๋ผ์•ผ ํ•  ์—๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

 

์ปจํŠธ๋กค๋Ÿฌ์— ์ด๋ ‡๊ฒŒ ์ •์˜ํ•ด์ฃผ๊ณ , main.js๋กœ ๋Œ์•„๊ฐ€์„œ app.use(errorController.logErrors)๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

**์ด๋•Œ ์ผ๋ฐ˜ ๋ผ์šฐํŠธ์˜ ์ •์˜ ๋‹ค์Œ์— ๋ฏธ๋“ค์›จ์–ด ๋ผ์ธ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ์ฝ”๋”ฉ์„ ๋งˆ์น˜๊ณ  ์ผ๋ถ€๋Ÿฌ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ•ด๋ณด๋ฉด

 

์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š”๋ฐ, ๊ทธ๋ƒฅ ์ €๋Ÿฐ ์ปจํŠธ๋กค๋Ÿฌ ์„ค์ • ์—†์ด ๋‚˜์˜ค๋˜ ์˜ค๋ฅ˜ ํ™”๋ฉด๊ณผ ๋˜‘๊ฐ™์•„์„œ ๋ญ๊ฐ€ ๋‹ค๋ฅธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.

console.error ํ•จ์ˆ˜์— ์˜ํ•ด ์ถœ๋ ฅ๋œ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•ด๋ณด๋ ค๊ณ  ํ•จ์ˆ˜ ์•ˆ์— "์˜ค๋ฅ˜ ์ถœ๋ ฅ" ์ŠคํŠธ๋ง์„ ์ถ”๊ฐ€ํ•ด์„œ ๋‚˜์˜ค๋‚˜ ๋ดค๋”๋‹ˆ ๋‚˜์˜ค์ง€๋„ ์•Š๋Š”๋‹ค... ์—ํœด^^

 

 

์•”ํŠผ ์ฒซ๋ฒˆ์งธ ๋ฐฉ์‹ ๋.

 

 

๋‘๋ฒˆ์งธ๋Š”

2. errorController.js ์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์‹œ์ง€๋กœ ์—๋Ÿฌ์— ๋Œ€์‘

 

 

์•„๊นŒ ์„ ์–ธํ–ˆ๋˜ logErrors ํ•จ์ˆ˜ ์•„๋ž˜์—

  • respondResourceFound : ๋ผ์šฐํ„ฐ์— ๋งค์นญ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ์š”์ฒญ๋“ค์„ ์žก์•„๋‚ด๋Š” ํ•จ์ˆ˜
  • respondInternalError : ๋ชจ๋“  ๋‚ด๋ถ€ ์—๋Ÿฌ๋ฅผ ์žก์•„๋‚ด๋Š” ํ•จ์ˆ˜

 

์ด ๋‘๊ฐ€์ง€๋ฅผ ์„ ์–ธํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ผ๋ถ€๋Ÿฌ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์„œ ํ™•์ธํ•ด๋ณด๋ฉด,

 

์ด๋ ‡๊ฒŒ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ๋Œ€๋กœ ์ž˜ ๋‚˜์˜จ๋‹ค.

 

 

 

์ •์  ํŒŒ์ผ์˜ ์ œ๊ณต

 

์ด์ œ ๋‚ด๊ฐ€ ๋งŒ๋“  html ํŒŒ์ผ๋กœ ๋Œ€์ฒดํ•ด์„œ ์—๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ์‘๋‹ตํ•ด๋ณด์•˜๋‹ค.

 

public ํด๋” ๋ฐ‘์— ์ •์  ํŒŒ์ผ๋กœ 404.html, 500.html์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ตํ•˜๋Š” ๋Œ€์‹  ์ด ํŒŒ์ผ๋กœ ์‘๋‹ต์‹œํ‚จ๋‹ค.

 

ํ•„์š”ํ•œ ์ž‘์—…์€ Express.js์— ์ •์  ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 

 

errorController์— ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€ํ•œ๋‹ค.

res.sendFile์€ ์—๋Ÿฌ ํŽ˜์ด์ง€์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ํŠน์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ผ๋ฐ˜ ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

์ด์ œ main.js์— ์ •์  ์ฝ˜ํ…์ธ  ์ œ๊ณต์„ ์œ„ํ•œ ์„ค์ •์ด ๋ผ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

์ด๋•Œ express ๋ชจ๋“ˆ์˜ static ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ด ๋ฉ”์†Œ๋“œ๋Š” ์ •์  ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ๋Š” ํด๋”์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

 

main.js ์— app.use(express.static("public")์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ

 

์ด ์ฝ”๋“œ๋Š” ์ •์  ํŒŒ์ผ ์ œ๊ณต์„ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ main.js์™€ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์œ„์น˜ํ•˜๋Š” public ํด๋”์— ์ ‘๊ทผํ•˜๋„๋ก ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์™„์„ฑ์‹œํ‚ค๊ณ , 404.html๊ณผ 500.html ํŒŒ์ผ์€ ๊ทธ๋ƒฅ ๋‚ด ๋ฉ‹๋Œ€๋กœ ๋Œ€์ถฉ ๋งŒ๋“ค์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด

 

 

 

์ด๋ ‡๊ฒŒ ๋‚ด๊ฐ€ ๋งŒ๋“  ํŽ˜์ด์ง€๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ์ž˜ ๋‚˜์˜จ๋‹ค.

 

ํ•œ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€ ์ด ์—๋ŸฌํŽ˜์ด์ง€ html ํŒŒ์ผ๋“ค์€ ๋‹ค๋ฅธ ejs ํŒŒ์ผ๋“ค๊ณผ ๋‹ฌ๋ฆฌ ๋ชจ๋“  ์Šคํƒ€์ผ์„ html ํŽ˜์ด์ง€ ์•ˆ์—์„œ ํ•ด๊ฒฐํ•ด์•ผํ•œ๋‹ค. ์ฆ‰, ๊ฐ™์€ css๋‚˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ณต์œ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 

 

LIST

๋Œ“๊ธ€