๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/React

[ํ•œ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ ๋จน๋Š” ๋ฆฌ์•กํŠธ] - Node.js ๊ธฐ์ดˆ

by YeonBu 2024. 11. 1.
728x90

๊ฐ•์˜ - Section 3 : Node.js ๊ธฐ์ดˆ

์œ ๋ฐ๋ฏธ : https://www.udemy.com/course/winterlood-react-basic/

์ธํ”„๋Ÿฐ : 

 

[2024] ํ•œ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ ๋จน๋Š” ๋ฆฌ์•กํŠธ(React.js) : ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹ค์ „๊นŒ์ง€ ๊ฐ•์˜ | ์ด์ •ํ™˜ Winterlood - ์ธํ”„๋Ÿฐ

์ด์ •ํ™˜ Winterlood | ๊ฐœ๋…๋ถ€ํ„ฐ ๋…ํŠนํ•œ ํ”„๋กœ์ ํŠธ๊นŒ์ง€ ํ•จ๊ป˜ ๋‹ค๋ค„๋ณด๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋ฆฌ์•กํŠธ๋ฅผ ์ด ๊ฐ•์˜๋กœ ํ•œ ๋ฒˆ์— ๋๋‚ด์š”. ํ•™์Šต์€ ์งง๊ฒŒ, ์‘์šฉ์€ ๊ธธ๊ฒŒ 17์‹œ๊ฐ„ ๋ถ„๋Ÿ‰์˜ All-in-one ๊ฐ•์˜!, ๋ฆฌ์•กํŠธ, ํ•œ ๊ฐ•์˜๋กœ

www.inflearn.com


 

 

 

Node.js ๊ธฐ์ดˆ

1. Node.js ์†Œ๊ฐœ

 

* Node.js๋Š” '์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript)'๋ฅผ ์„œ๋ฒ„ ์ธก์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ(์‹คํ–‰ ํ™˜๊ฒฝ)์ด๋‹ค.

์›๋ž˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ์–ธ์–ด์˜€์ง€๋งŒ, Node.js ๋•๋ถ„์— ์„œ๋ฒ„์—์„œ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

(Node ๋“ฑ์žฅ ์ „์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)์—์„œ๋งŒ ์‹คํ–‰ํ•˜๊ณ , ์„œ๋ฒ„์ธก์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ธ ํ›„ ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ๋‹ค๋ฅธ์–ธ์–ด(PHP, Python, Java๋“ฑ)๋กœ ์ฒ˜๋ฆฌํ–ˆ์—ˆ๋‹ค.)

 

ํŠน์ง•

1. ๋น„๋™๊ธฐ I/O : I/O์ž‘์—…(ํŒŒ์ผ ์ฝ๊ธฐ/์“ฐ๊ธฐ, DB ์ž‘์—…, ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋“ฑ)์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์„œ, ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค
2. ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„ : Node.js๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์ด์ง€๋งŒ, ๋‚ด๋ถ€์ ์œผ๋กœ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค์ˆ˜์˜ ์š”์ฒญ์„ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค
3. V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ : ๊ตฌ๊ธ€ ํฌ๋กฌ์˜ V8 ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•œ๋‹ค.
4. ํฌ๋กœ์Šค ํ”Œ๋žซํผ : ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ(Windows, Mac, Linux)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
5. NPM(Node Package Manager) : Node.js์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ์„ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

Node.js ๊ธฐ์ดˆ

2. Node.js ์‚ฌ์šฉ

* VSCODE ๋‚ด๋ถ€ ํ„ฐ๋ฏธ๋„ ๋‹จ์ถ•ํ‚ค : Ctrl + J

 

* ํŒจํ‚ค์ง€๋ž€ ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์ด๋‚˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆํ™”ํ•œ ํŒŒ์ผ์ด๋‚˜ ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ์„ ๋งํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๋“ค์€ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์‰ฝ๊ฒŒ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ง„ ๊ฒƒ์ด๋‹ค. npm์„ ํ†ตํ•ด ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. Node.js ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™”(package.json ํŒŒ์ผ ์ƒ์„ฑ)

npm init

package name : ํŒจํ‚ค์ง€ ์ด๋ฆ„ 
version : ํŒจํ‚ค์ง€ ๋ฒ„์ „
description : ํŒจํ‚ค์ง€ ์„ค๋ช…
entry poin : ๋ฉ”์ธ์œผ๋กœ ์‹คํ–‰๋  js ํŒŒ์ผ
test command : ํ…Œ์ŠคํŠธ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด
git repository : ๊นƒ URL
keywords : ๊ฒ€์ƒ‰์„ ๋•๊ธฐ์œ„ํ•œ ํ‚ค์›Œ๋“œ
author : ํ”„๋กœ์ ํŠธ ์ž‘์„ฑ์ž
license : ํ”„๋กœ์ ํŠธ ๋ผ์ด์„ ์Šค(๊ธฐ๋ณธ๊ฐ’ : ISC)

 

 

2. index.js ํŒŒ์ผ ์ƒ์„ฑ

console.log("์•ˆ๋…• js์•ผ");

 

์ƒ์„ฑ ํ›„ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ์ž‘์„ฑ ํ›„ node์—์„œ ์‹คํ–‰

 

์‹คํ–‰๋ฐฉ๋ฒ• : node ์‹คํ–‰ํ•  ํŒŒ์ผ ๊ฒฝ๋กœ์™€ ์ด๋ฆ„  (node src/index.js)

ํ„ฐ๋ฏธ๋„

 

 

3. ํŒจํ‚ค์ง€ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ

 

* ํŒจํ‚ค์ง€ ์Šคํฌ๋ฆฝํŠธ๋ž€ package.json ํ”ผ์•Œ์˜ script ์„น์…˜์— ์ •์˜๋œ ์Šคํฌ๋ฆฝํŠธ๋Š” npm์„ ํ†ตํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜๊ณ , npm run์„ ํ†ตํ•ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒจํ‚ค์ง€ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ์˜ˆ์‹œ (package.json ํŒŒ์ผ์˜ script ์„น์…˜์— ์›ํ•˜๋Š” ๋ช…๋ น์–ด ์„ค์ •)
"scripts": {
    "start": "node index.js",
    "test": "echo \"Running tests...\"",
    "build": "webpack --config webpack.config.js",
    "dev": "nodemon index.js",
    "lint": "eslint .",
    "serve": "node server.js"
  }โ€‹

* start : npm start๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์‹œ์ž‘ ๋ช…๋ น์–ด. ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ
* test : npm test๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด. ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ์Šคํฌ๋ฆฝํŠธ ์„ค์ •
* build : npm run build๋กœ ์‹คํ–‰ํ•˜๋Š” ๋นŒ๋“œ ๋ช…๋ น์–ด. ๋ฐฐํฌํ•˜๊ธฐ ์ „ ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ฒˆ๋“ค๋ง ํ•  ๋•Œ ์‚ฌ์šฉ
* dev : npm run dev ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ๋ชจ๋“œ ๋ช…๋ น์–ด. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ์žฌ์‹œ์ž‘ ํ•„์š” ์—†์ด ์ž๋™ ๋ฐ˜์˜
* lint : npm run lint๋กœ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ ๋ฆฐํŠธ ๊ฒ€์‚ฌ ๋ช…๋ น์–ด. ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€
* serve : npm run serve ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ์‹คํ–‰ ๋ช…๋ น์–ด

 

 

์‹ค์ œ ์ž‘์„ฑํ•œ ํŒจํ‚ค์ง€ ์Šคํฌ๋ฆฝํŠธ

 

 

npm start ์‹คํ–‰

 

 

 

 

 


Node.js ๊ธฐ์ดˆ


3. Node.js ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ์ดํ•ด

 

* ๋ชจ๋“ˆ์ด๋ž€ ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ(ํŒŒ์ผ)์ด๋‹ค. ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ฐ ํŒŒ์ผ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋‹ด์•„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

(ex. user ๋ชจ๋“ˆ, cart ๋ชจ๋“ˆ, payment ๋ชจ๋“ˆ)

 

* ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด๋ž€ ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•˜๊ณ , ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ์˜ ๋ชจ๋“ˆ์„ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ.

  ๊ฐ•์˜์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ ์ค‘ Common JS(CJS), ES Module(ESM)์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๋„๋ก ํ•œ๋‹ค.

 

CommonJS (CJS)
: Node.js๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ ์‹œ์Šคํ…œ. ์ด ๋ฐฉ์‹์€ JS๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์‹คํ–‰๋˜๋˜ ์‹œ์ ˆ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„œ๋ฒ„์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์œผ๋กœ, Node.js๊ฐ€ ํƒ„์ƒํ•  ๋•Œ๋ถ€ํ„ฐ ์“ฐ์—ฌ์™”๋‹ค. CommonJS ๋ชจ๋“ˆ์€ ๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋”ฉ๋˜๋ฏ€๋กœ, ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ๋•Œ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์ฆ‰์‹œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ์ธก ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์— ์ œ์•ฝ์ด ์žˆ๋‹ค.

ES Module (ESM)
 : JS ์–ธ์–ด์˜ ํ‘œ์ค€ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์œผ๋กœ, ES6์—์„œ ๋„์ž…๋œ ๋ฐฉ์‹์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ €์™€ Node.js์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, ์ตœ์‹  ๋ฌธ๋ฒ•์— ๋งž์ถฐ์ง„ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด๋‹ค. ESM์€ ๋น„๋™๊ธฐ ๋กœ๋”ฉ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋น„๋™๊ธฐ๋กœ ๋ชจ๋“ˆ์„ ๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ํ™˜๊ฒฝ ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์ด๋‹ค.

 

 

Common JS

 

1. math.js ํŒŒ์ผ ์ƒ์„ฑ

(์‹ค์Šต์„ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ชจ๋“ˆ ์ƒ์„ฑ)

// math ๋ชจ๋“ˆ

function add(a, b) {
    return a + b;
}

function sub(a, b){
    return a - b;
}

module.exports = {
    add : add,
    sub
}

 

* module.exposrts : Common JS ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์— ์˜ํ•ด์„œ ๋‘ ๊ฐœ์˜ ํ•จ์ˆ˜๊ฐ€ ํ˜„์žฌ ๋ชจ๋“ˆ์—์„œ ๋‚ด๋ณด๋‚ด์ง€๊ฒŒ ๋œ๋‹ค.

(๋ณ€์ˆ˜์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์ด๋ฆ„์ด ๊ฐ™๋‹ค๋ฉด sub ์ฒ˜๋Ÿผ ํ•œ ๋ฒˆ๋งŒ ๋ช…์‹œํ•ด์ค˜๋„ ๋œ๋‹ค)

 

 

 

2. index.js์—์„œ ๊ฐ’ ๋ฐ›๊ธฐ

// index.js

const moduleData = require("./math");

console.log(moduleData); // { add: [Function: add], sub: [Function: sub] }
console.log(moduleData.add(1, 2)); // 3
console.log(moduleData.sub(1, 2)); // -1

 

* require : ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ

 

// index.js

const { add, sub } = require("./math");

console.log(add(1, 2)); // 3
console.log(sub(1, 2)); // -1

 

* ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์ด์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํšจ์œจ์„ฑ์ด ํ–ฅ์ƒ๋จ

(๊ฐ์ฒด์˜ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์ด๋ž€ ๊ฐ์ฒด์˜ ์†์„ฑ ๊ฐ’์„ ๊บผ๋‚ด์™€ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฌธ๋ฒ•์ด๋‹ค)

 

 

 

ES Module

 

1. package.json์—์„œ ESM ์‚ฌ์šฉ ์„ค์ •

(Node.js์—์„œ .mjs ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ESM์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ)

"type": "module"

 

* ์ฐธ๊ณ ๋กœ ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด, Common JS ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์€ ESM ๊ทœ์น™๊ณผ ์ถฉ๋Œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

Error Message
: require is not defined in ES module scope, you can use import instead

 

 

 

2. math.js ํŒŒ์ผ ์ˆ˜์ •

// math ๋ชจ๋“ˆ

function add(a, b) {
    return a + b;
}

function sub(a, b){
    return a - b;
}

export { add, sub };

 

* export : ESM์—์„œ ๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋‚ผ ๋–„ ์‚ฌ์šฉ

 

// math ๋ชจ๋“ˆ

export function add(a, b) {
    return a + b;
}

export function sub(a, b){
    return a - b;
}


* ํ•จ์ˆ˜ ์•ž์— export๋ฅผ ์ž‘์„ฑํ•ด๋„ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•จ

 

 

 

3. index.js์—์„œ ๊ฐ’ ๋ฐ›๊ธฐ

// index.js

import { add, sub } from "./math.js";

console.log(add(1, 2)); // 3
console.log(sub(1, 2)); // -1

 

* import : ESM์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ

* ์ฐธ๊ณ ๋กœ import ํ•  ๋•Œ ํ™•์žฅ์ž๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ํŒŒ์ผ์„ ์ฐพ์ง€ ๋ชปํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ

Error Message
: [ERR_MODULE_NOT_FOUND]: Cannot find module

 

 

 

# default ๋‚ด๋ณด๋‚ด๊ธฐ

 

* default๋Š” ๋ชจ๋“ˆ์—์„œ ๋‹จ์ผ ๊ฐ’์„ ๊ธฐ๋ณธ์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•จ. ์ด๋ ‡๊ฒŒ ๋‚ด๋ณด๋‚ด๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๊ฐ€์ ธ์˜ค๋Š” ์ด๋ฆ„์„ ์ž์œ ๋กญ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

(export๋กœ๋งŒ ๋‚ด๋ณด๋‚ด๋Š” ๋ช…๋ช…๋œ ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ •ํ™•ํ•œ ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•จ)

 

// math ๋ชจ๋“ˆ

export default function multiply(a, b){
    return a * b;
}

 

// index.js

import mul from "./math.js";
// ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ํ•œ๋ฒˆ์— ๊ฐ€์ ธ์˜ฌ๋•Œ๋Š” import mul, { add, sub } from "./math.js" ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋จ


console.log(mul(1, 2));

 



 

Node.js ๊ธฐ์ดˆ

4. Node.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

 

* ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ฝ”๋“œ ๋ชจ์Œ์ด๋‹ค. Node.js๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์›น, ์„œ๋ฒ„, ํŒŒ์ผ ์ฒ˜๋ฆฌ, ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ผ๋ถ€ ์†Œ๊ฐœ(์ด๋ฆ„ ํด๋ฆญํ•˜๋ฉด ์„ค๋ช… ํŽ˜์ด์ง€๋กœ ์ด๋™)

1. fs(File System) : ํŒŒ์ผ์„ ์ฝ๊ณ , ์“ฐ๊ณ , ์‚ญ์ œํ•˜๋Š” ๋“ฑ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์กฐ์ž‘ ๊ธฐ๋Šฅ
2. http : HTTP ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ฒ„๋Ÿฌ๋ฆฌ๋กœ ๊ฐ„๋‹จํ•œ ์›น ์„œ๋ฒ„ ๊ตฌ์ถ• ์‹œ ์‚ฌ์šฉ
3. path : ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ๊ฒฝ๋กœ๋ฅผ ๊ฒฐํ•ฉํ•˜๊ฑฐ๋‚˜ ํ™•์žฅ์ž๋ฅผ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉ
4. url : URL์„ ํŒŒ์‹ฑํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ
5. crypto : ์•”ํ˜ธํ™”์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต(๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”, ํ•ด์‹œ ์ƒ์„ฑ ๋“ฑ)
6. events : ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
7. os : ์šด์˜์ฒด์ œ์™€ ๊ด€๋ จ๋œ ์ •๋ณด์™€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ, CPU ์ •๋ณด๋“ฑ ํ™•์ธ ๊ฐ€๋Šฅ
8. stream : ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๋Š” ๋“ฑ์˜ ์ž‘์—…์—์„œ ์œ ์šฉ
9. util : ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

 

1. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

 

1.1 npm ํ™ˆํŽ˜์ด์ง€ ์ ‘์†(๊ตฌ๊ธ€์— npmjs๋ผ๊ณ  ์น˜๋ฉด ์ œ์ผ ์œ„์— ๋œจ๋Š” ํŽ˜์ด์ง€)

 

npm | Home

Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

 

 

1.2 ์„ค์น˜ ํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„ ๊ฒ€์ƒ‰

(๊ฐ„๋‹จํ•œ ์‹ค์Šต์„ ์œ„ํ•ด ๊ฐ•์˜์—์„œ๋Š” randomcolor๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด)

 

์šฐ์ƒ๋‹จ install ๋ถ€๋ถ„์— ์žˆ๋Š” ์„ค์น˜ ์ฝ”๋“œ ๋ณต์‚ฌ ํ›„ VSCODE ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰

 

"dependencies": {
    "randomcolor": "^0.6.2"
}

 

package.json์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ ๋œ ๊ฒƒ ํ™•์ธ

 

* node_modules์™€ package-lock.json

๋”๋ณด๊ธฐ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฒ˜์Œ ์„ค์น˜ํ•˜๋ฉด node_modulesํด๋”์™€ package-lock.json ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

 

node_modules 

 : ์ด ํด๋”๋Š” ์‹ค์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๊ณณ์ด๋‹ค.

package-lock.json

 : ์ด ํŒŒ์ผ์€ ํŒจํ‚ค์ง€๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ๋ฒ„์ „, ๊ฒฝ๋กœ, ๋ฌด๊ฒฐ์„ฑ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ package.json๊ณผ ์ด ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  npm install์„ ์‹คํ–‰ํ•˜๋ฉด, ์ด ํŒŒ์ผ์— ๊ธฐ๋ก๋œ ๋Œ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ๊ฐ™์€ ํ™˜๊ฒฝ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

 

// index.js

// ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ importํ•  ๋•Œ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„์„ ์ž‘์„ฑํ•˜๋ฉด ๋จ
import randomColor from "randomcolor";

const color = randomColor();
console.log(color);

 

 

 

# ๋งŒ์•ฝ node_modules ํด๋”์™€ package-lock.json์ด ์ง€์›Œ์กŒ๋‹ค๋ฉด?

Error Message
: [ERR_MODULE_NOT_FOUND]: Cannot find package

 

package.json "dependendies"์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

npm i ๋˜๋Š” npm install์„ ์ž…๋ ฅํ•ด์„œ ์‹คํ–‰ํ•˜๋ฉด ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์žฌ ๋‹ค์šด๋กœ๋“œ ํ•ด์ค€๋‹ค.

(package.json๋งŒ ์žˆ์œผ๋ฉด ์–ธ์ œ๋“  ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ๊นƒํ—ˆ๋ธŒ ๋“ฑ์— ์—…๋กœ๋“œํ•  ๋•Œ๋Š” node_modules ํด๋”๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค)

 

 

 

๋ฐ˜์‘ํ˜•