์ค๋์ ์ ์ ํ ์๋ฌ ํ์ด์ง๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋ํด ๊ณต๋ถํ๋ค.
๋ฐ๋ฒ ํ๋ ์์๊ฐ๋๋ ์๋ฌ ํ์ด์ง๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ ๋ณด์ฌ์ฃผ๋ ๊ฑธ ํ์๋๋ฐ ๋น์ทํ ์๋ฌ ์ฒ๋ฆฌ ๊ธฐ์ ์ด๋ค.
๋จผ์ ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํ ์ ์ฒด์ ์ธ ๊ฐ์๋
- ์ ํ๋ฆฌ์ผ์ด์ ์์ ์คํฌ๋ฆฝํธ ๋ณ๊ฒฝ
- ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฏธ๋ค์จ์ด ์์ฑ
- 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๋ ๋ ์ด์์์ ๊ณต์ ํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ๋ค.
'โ๏ธ 21-2 IPP > Node.js study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Node.js - 14 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ (0) | 2021.10.28 |
---|---|
Node.js - 13 Express.js๋ฅผ ํตํ ์ฌ์ดํธ ๊ฐ์ (0) | 2021.10.27 |
Node.js - 11 ๋ทฐ์ ํ ํ๋ฆฟ, ๋ ์ด์์ (0) | 2021.10.25 |
Node.js - 10 Express.js (0) | 2021.10.21 |
Node.js - 9 ์บก์คํค ํ๋ก์ ํธ: ์ฒซ๋ฒ์งธ ์น (0) | 2021.10.21 |
๋๊ธ