๊ฐ์ - Section 3 : Node.js ๊ธฐ์ด
์ ๋ฐ๋ฏธ : https://www.udemy.com/course/winterlood-react-basic/
์ธํ๋ฐ :
[2024] ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ(React.js) : ๊ธฐ์ด๋ถํฐ ์ค์ ๊น์ง ๊ฐ์ | ์ด์ ํ Winterlood - ์ธํ๋ฐ
์ด์ ํ Winterlood | ๊ฐ๋ ๋ถํฐ ๋ ํนํ ํ๋ก์ ํธ๊น์ง ํจ๊ป ๋ค๋ค๋ณด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฆฌ์กํธ๋ฅผ ์ด ๊ฐ์๋ก ํ ๋ฒ์ ๋๋ด์. ํ์ต์ ์งง๊ฒ, ์์ฉ์ ๊ธธ๊ฒ 17์๊ฐ ๋ถ๋์ All-in-one ๊ฐ์!, ๋ฆฌ์กํธ, ํ ๊ฐ์๋ก
www.inflearn.com
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์ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ์ฝ๊ฒ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.
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 ๋ก ์คํํ ์ ์๋ ์๋ฒ ์คํ ๋ช ๋ น์ด


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));
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 ํด๋๋ ํฌํจํ์ง ์๋๋ค)
'IT > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ] - React.js ์ ๋ฌธ 2 (1) | 2024.11.22 |
---|---|
[ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ] - React.js ์ ๋ฌธ 1 (1) | 2024.11.19 |
[ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ] - React.js ๊ฐ๋ก (1) | 2024.11.15 |
[React] ReactJS๋ก ์ํ ์น ์๋น์ค ๋ง๋ค๊ธฐ (STATE #1) (0) | 2024.02.22 |
[React] ReactJS๋ก ์ํ ์น ์๋น์ค ๋ง๋ค๊ธฐ (The BASICS OF REACT) (0) | 2024.02.21 |