๐ฃ์ํฉ
์ค๋๋ถํฐ ๋ด์คํผ๋ ํ๋ก์ ํธ๊ฐ ์์๋์๋ค.
์ฒซ๋ ์ด๋ผ ์ด๊ธฐ ์ ํ ๊ณผ ๋ฐฉํฅ์ ๋ํ ํ์๋ฅผ ์ค๋ ์งํํ๋๋ฐ,
์ง๋๋ฒ ๊ณผ์ ๋ค์์ require๋ฅผ ์ด์ฉํด express์ sequelize ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์,
์ด๋ฒ ๊ณผ์ ์์๋ ๋ชจ๋์ ์ฌ์ฉํด ๋ณด๊ณ ์ถ์๋ค.
๐ฃ์ก์
๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํด ๋๋ ์๋์ ๊ฐ์ ํ๋์ ํ๋ค.
- package.json ํ์ผ์ type:module ์ ์ค์ ํ๋ค.
- index.json ํ์ผ์ ์๋ require ๋ก ์ฌ์ฉํ ์ ๋ค์ ๋ชจ๋ export๋ก ๋ฐ๊ฟจ๋ค.
- config.json ํ์ผ์์ dotenv๋ฅผ ๊ฐ์ ธ์ฌ๋ export๋ก ๊ฐ์ ธ์ ํ๊ฒฝ๋ณ์๋ก ์ฌ์ฉํ๋ค.
- config.js ํ์ผ๋ก ํ์ผ ํ์์ ๋ฐ๊พผ ๋ค์, ์์ ๋ด์ฉ๋ฌผ์ js ํ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ค.
๊ทธ๋ฌ๋ ์์๊ณผ ๋ฌ๋ฆฌ DB๋ฅผ ์์ฑํ๋ ์๋์ ๋ช ๋ น์ด๋ ์๋ํ์ง ์์๋ค.
npx sequelize db:create
๊ตฌ๊ธ ๊ฒ์์ ํตํด ๋ค๋ฅธ ์ฝ๋๋ก ํ ์คํธ๋ฅผ ํด๋ดค์ง๋ง, ์ฌ์ ํ ์๋ํ์ง ์์๋ค.
์ํ๋ผ์ด์ฆ์์๋ module์ ์ง์ํ์ง ์๋๊ฑธ๊น?
์๋์ ์๋ฌ๋ฉ์ธ์ง๋ง ๋ด๋ฟ๊ณ ์์๋ค.
ERROR: Error reading "config/config.cjs". Error: Error [ERR_MODULE_NOT_FOUND]: Cannot find module
๊ณต์๋ฌธ์์์๋ ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ฒ์ ์ ํด๋นํ๋ 6 ๋ฒ์ ์ ๋ํ ์์ ๋ฅผ require๋ฅผ ํตํด ๋ณด์ฌ์ฃผ๊ณ ์์๋ค.
๊ทธ๋ ์ง๋ง ๋ค๋ฅธ ๋๊ธฐ๋ถ๋ค์ค module๋ก ๋ฐ๊พธ์ ๋ถ์ด ๊ณ์๋ค๋๊ฑธ ์๊ณ ์์๊ธฐ์ ๋ถ๋ช ๋ฐฉ๋ฒ์ด ์์ ๊ฒ ๊ฐ์๋ค.
ํด๋น ์๋ฌ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฒ์ํ๋ ์ค, ESM ๋ฐฉ์๊ณผ CJS ๋ฐฉ์์ ๋ํ ์ฐจ์ด๋ฅผ ์ ๋๋ก ๋ชจ๋ฅด๊ณ ์๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋ฌ๋ค ์ข์ ๋ธ๋ก๊ทธ๋ฅผ ๋ด์ ์ข๋ ์ ๋ฆฌ๊ฐ ๋์๋๋ฐ, (ํด๊ฒฐ์ ๋ชปํ์ง๋ง ๊ณต๋ถ๋ ๋์๋ค.)
๐ ESM ๋ฐฉ์, CJS ๋ฐฉ์
- CJS ๋ฐฉ์์์ require()์ ๋๊ธฐ์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
- ESM ๋ฐฉ์์์๋ ๋น๋๊ธฐ ํ๊ฒฝ์์ ์คํํ๋ค.
- (ํ์ผ์ ๋น๋๊ธฐ๋ก ๋ค์ด ๋ฐ ํ์ฑ ํ, import๋ ์คํฌ๋ฆฝํธ ๊ฐ์ ธ์จ ํ_๋ณ๋ ฌ๋ค์ด๋ก๋, ์ค๋น ์๋ฃ๋๋ฉด ์คํํ๋ค._์์ฐจ์ ์คํ )
- CJS๋ ์ฌ์ ํ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
- ESM ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, .mjs๋ก ๋ฐ๊พธ๊ฑฐ๋, 'type: module'์ ์ค์ ํด ์ฃผ๋ฉด ๋๋ค.
์ฐธ๊ณ ํ ์ฌ์ดํธ
https://yceffort.kr/2020/08/commonjs-esmodules
๊ทธ๋ฌ๋ค ๋๋์ด ์๋ํ๋๋ฐ,,,,
์ฌ์ค ํด๊ฒฐ์ ํ๊ฒ ์๋์๋ค.
๐ babel-register
babel-register
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
.js ํ์ผ์ด ์๋๋ผ .cjs ํ์ผ๋ก ๋ณ๊ฒฝํ๋ค.
import๋ก ํ ํ์ผ๋ค์ ๋ชจ๋ require๋ก ๋ณ๊ฒฝํ๋ค.
๊ทธ๋ฌ์... ์๋์ด ์์ํ๋ค..
๊ทธ์น๋ง ์ด์ ๋ฅผ ์ ์ ์์๋ค.
์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ฉด ํด๊ฒฐ๋๋ค๋ ๋๊ธฐ์ ์กฐ์ธ์ผ๋ก ์ผ๋จ ์๋ํด๋ณธ ๋ฐฉ๋ฒ์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
๋๋ ์ด๊ฒ์ ๋ํ ์ด์ ๊ฐ ์๊ณ ์ถ์ด, ๋ค์ ๊ฒ์์ ์์ํ๋ค.
๋๋์ฒด ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๋ค ์ญํ ์ ํ๋ ์ ์ผ๊น?
๊ฐ๋ ์ ์ ์ค๋ช ํด์ฃผ๋ ์ฐฉํ GPT์๊ฒ ๋ฌผ์ด๋ดค๋๋ ๋ต๋ณ์ ์ด๋ฌ๋ค.
- Babel์ ์ฌ์ฉํด ES6 ์ฝ๋๋ก ๋ณํํ๋๋ฐ ๋์์ ์ฃผ๋ ๋๊ตฌ ์ค ํ๋์ด๋ค.
- node ์์ ES6 ๋ชจ๋์ ์ง์ํ์ง ์๋ ์ํฉ์์๋ ํด๋น ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
์ฆ..
module ๋ก ์์ฑํ์ง๋ง ์ babel-register ๋ผ๋ ์ ๊ฐ ๋ค์ CJS ๋ก ๋ณ๊ฒฝ์ ํด์ค๋ค๋ ๋ง์ด๋ค..
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ์ธ๊ฑฐ๋ฉด ์๋ฏธ๊ฐ ์๋๋ฏ ๋๊ปด์ก๋ค..
์๋๋ฉด module ์ ์ฌ์ฉํ๊ณ ์ ํ์ง๋ง ์ค์ ๋ก๋ ์ฌ์ฉํ์ง ์๋๊ฒ๊ณผ ๋์ผํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฐ๋ฐ, ๋ค๋ฅธ ๋๊ธฐ๋ถ์๊ฒ ์ด ์ํฉ์ ๋ง์๋๋ฆฌ๋, babel-register ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ module๋ก ์ฌ์ฉํ์ จ๊ธธ๋
๋ค์ ๊ถ๊ธ์ฆ์ด ์์๋์๋ค.
๋ญ๊ฐ ๋ค๋ฅธ๊ฑธ๊น ์ถ์ด์, ์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ์ค ์ ์๋๊ณ ์ฌ์ญค๋ดค๊ณ , ํ์พํ ๋ณด์ฌ์ฃผ์ ง๋ค.
์ํ๋ผ์ด์ฆ ๋ฒ์ ๋ ๋์ผํ๊ณ , ์ ๋ง babel-register ๋ฅผ ์ฌ์ฉํ์ง ์์๋๋ฐ๋ ์๋ํ๋ค.
์ด์ ๊ฐ ๊ถ๊ธํด์ ์ฝ๋๋ฅผ ๋ณต์ฌํด์ ๋ด vsCode ํ๊ฒฝ์์ ํ ์คํธ ํด๋ดค๋ค.
๊ทธ๋ฐ๋ฐ...?! ์๋ํ์ง ์์๋ค.
์์ฌ๊ฐ๋ ๋ถ๋ถ์ด ์๊ฒผ๋ค. ๋ฒ์ ์ฐจ์ด
์๋ํ ์ฝ๋์ ๋์ผํ๊ณ , ์ ํ ๋ ๋์ผํ๋ฐ, ์๋ํ์ง ์๋๋ค๋๊ฑด
๋ฒ์ ์ฐจ์ด์ผ ํ๋ฅ ์ด ์ปค๋ณด์๋ค.
๊ทธ๋์ node ํ๊ฒฝ์ ์ฌ์ญค๋ณด๋ 16๋ฒ์ ์ ์ด์ฉํ๊ณ ์์๋ค.
๋์ node ํ๊ฒฝ์ 20๋ฒ์ ์ด์๋ค.
๊ทธ๋ฌ๋ ๊ฒ์ฆ์ ์ํด์๋ ๋ฒ์ ์ ๋ฎ์ถฐ์ ํ ์คํธ๋ฅผ ํด๋ด์ผ ํ์ง๋ง,
ํํ๋ก์ ํธ ์งํ์ ์ํด ๋ ์๊ฐ์ ์ฌ์ฉํ ์ ์์ด ๊ฒ์ฆํ์ง ๋ชปํ๋ค.
๋ด์ผ module์ ์ฌ์ฉํ์ ๋ค๋ฅธ ๋ถ์๊ฒ ์ฌ์ฉํ node์ ๋ฒ์ ๋ฐ ์ฝ๋๋ฅผ ๋น๊ตํด ๋ด์ผ๊ฒ ๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/11/23 TIL __ ejs ๋ฅผ ์ด์ฉํด express ํ๊ฒฝ์์ ์ค๊ณ๋ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ์ (1) | 2023.11.23 |
---|---|
23/11/22 TIL __ express validator ์ฌ์ฉ๊ธฐ (0) | 2023.11.22 |
23/11/20 TIL __ erd cloud ์ฌ์ฉ๋ฒ!! erd ๋ง๋ค๊ธฐ (0) | 2023.11.20 |
23/11/19 TIL __ Joi ๋ฅผ ํ์ฉํ ์ ํจ์ฑ ๊ฒ์ฌ feat. Joi๋ฅผ ์ฌ์ฉํ๋ ์ด์ (1) | 2023.11.19 |
23/11/18 TIL __ ์๋ฌ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด ๊ตฌํ (0) | 2023.11.18 |