
babel ์ด๋?
์ต์ ES6 JS์ฝ๋๋ฅผ ๋ฌด๋ํ ์์ ์ ์ฝ๋๋ก ๋ณํํด์ฃผ๋ "์๋ฐ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ"์ด๋ค.
babel ์ค์น
npm install @babel/node
npm install @babel/core
npm install @babel/preset-env
npm install core-js@3
// ๋ง์ฝ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ๋ค๋ฅธ ์ข
๋ฅ์ ํ๋ฆฌ์
์ ์ฌ์ฉํด์ผํ๋ค. ์ฌ๊ธฐ์ envํ๋ฆฌ์
์ ์ฌ์ฉํ๋ค.
โ
.babelrc ํ์ผ ๋ง๋ค๊ธฐ
- ๋ฐ๋ฒจ์ ํ๋ฆฌ์ ์ ์ค์ ํ๋ ํ์ผ์ ๋ง๋ ๋ค.
- ๋ฐ๋ฒจ์ด ์คํ๋๊ธฐ ์ ์ ์ด ํ์ผ ๊ฑฐ์ณ, ์ค์ ํด๋ ํ๋ฆฌ์ ์ ์ฝ๊ฒ ๋๋ค.
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "entry",
"corejs": 3
}
]
]
}
babel๋ก ์คํํ๊ธฐโ
- node๊ฐ index.js๋ฅผ ์คํํ๋ ๋์ babel์ด ์คํํด์ค๋ค.
- package.jsonํ์ผ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
{
"scripts": {
"start": "babel-node init.js"
},
...
}
import "core-js";

nodemon ์ด๋?
๋ณ๊ฒฝํ ์ฝ๋๋ฅผ ์ ์ฅํ ๋ ๋ง๋ค, ์๋ฒ๋ฅผ ๋ค์ ์์ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ค.
์๋ฒ ๊ฐ๋ฐ์ ์์ฐ์ฑ ํฅ์์ ์ํด ์ฌ์ฉํ๋ค.
nodemon์ค์น ๋ฐ ์คํ
npm install -g nodemon
// ์์คํ
๊ฒฝ๋ก์ ๊ธ๋ก๋ฒํ๊ฒ ์ค์นํ ๊ฒฝ์ฐ
npm install --save-dev nodemon
= npm i nodemon -D
// ๊ฐ๋ฐ์ ๋ชจ๋๋ก ์ค์นํ ๊ฒฝ์ฐ
// = dependency(ํ๋ก์ ํธ์ ์ฌ์ฉ ๋ ํจํค์ง)์ ๊ด๋ จ ์์ด ์ค์นํ ๊ฒฝ์ฐ
- package.jsonํ์ผ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
"scripts":
"start": "nodemon index.js"
// npm start ๋ช
๋ น์ด๋ฅผ ํตํด ํ์ผ์ด ์ ์ฅ๋ ๋ ๋ง๋ค ์๋ฒ๋ฅผ ์ฌ์คํํ๋ค.
์ค๋ฅ ๋ฐ์ ์
1. "babel-node module cannot be found"
package.jsonํ์ผ์ ์๋์ ๊ฐ์ด ์ถ๊ฐํด์ค๋ค.
1) npx: babel-node๊ฐ binary ์คํ ํ์ผ์ด๋ผ ํ๊ฒฝ ๋ณ์, ๊ฒฝ๋ก ์ค์ ์ ํด์ค์ผํ๋๋ฐ, npx์ ์ด์ฉํด ์คํ์์ผ์ฃผ์ด ํด๊ฒฐํ ์ ์๋ค.
2) --exec๋ nodemon ํจํค์ง๋ฅผ ์คํํ๋ผ๋ ๋ช ๋ น์ด
"scripts":
{
"start": "nodemon --exec npx babel-node init.js"
}
2. Warning: To load an ES module, set “type”: “module”
์๋ก์ด ๋ฒ์ ์ผ๋ก type:module๋ก ๋์ฒด๊ฐ๋ฅํ์ง๋ง, ํ์ webpack๋ชจ๋์ ๋ถ๋ฌ์ฌ ๋ ์ถฉ๋์ด ๋ฐ์ํ๋ฏ๋ก 1๋ฒ์ ์ฌ์ฉํ๋ค.
3. ์๋ฒ๊ฐ ๋ ๋ฒ ๊ฐฑ์ ๋๋ ์ค๋ฅ
"scripts":
"start": "nodemon index.js --delay 2"
//2์ด์ ์ฌ์ ๋ฅผ ๋๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ฒ์ธ) polyfill ์ด๋?
- polyfill : ์ถฉ์ ์์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์์ด ๊บผ์ก์๋ ์ถฉ์ ์์ ์ฑ์ ๋ฉ๊พธ๋ ์ญํ ์ ํ๋ค. -> ๋ฌด์์ ๋ฉ๊พธ๋๊ฐ?
- ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ์ง ์๋ ์ฝ๋๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ด๋ ํ๋ฌ๊ทธ์ธ(์ถ๊ฐ๊ธฐ๋ฅ)์ ์๋ฏธํ๋ค.
babel ๋ง ์์ผ๋ฉด ์ฅ๋ก ์๋๋๊น?
- ๋ฐ๋ฒจ์ ESNext ์์ ์ง์ํ๋ ๋ฌธ๋ฒ์ ES5 ๋ฌธ๋ฒ์ผ๋ก ๋ฒ์ญํด์ฃผ์ง๋ง, ES5์ ์กด์ฌํ์ง ์๋ ES6์ Map, Promise, Set, Object.assigin() ์ด๋ฐ์ ๋ค์ ์กด์ฌํ์ง ์์ผ๋ ๋ฒ์ญ์ ํด์ค์๊ฐ ์๋ค.
- ๊ทธ๋์ ์ ๊ฑธ ๋งค๊พธ๊ธฐ ์ํด polyfill ์ ์ฌ์ฉํ๋ค. (Map, Promise, Set ๋ฑ์ ์ฌ์ฉ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ค๋ค)
- babel ์ babel-polyfill ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๋์ง๋ง, ํ์ฌ deprecated ๋์๊ธฐ ๋๋ฌธ์ core-js์ regenerator-runtime์ ์ง์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ํ๊ณ ์๋ค.
'๐ Back > ๐งฉ Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Express ๋ฏธ๋ค์จ์ด ์ฝ๋] app.use(), app.get(), Router() (0) | 2021.01.25 |
|---|---|
| [Express ๋ฏธ๋ค์จ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ] morgan, helmet, cookie-parser, body-parser (0) | 2021.01.25 |
| [Express ๋ฏธ๋ค์จ์ด] ๋ฏธ๋ค์จ์ด๋? ๋ฏธ๋ค์จ์ด ์์ฑ๋ฒ (0) | 2021.01.22 |
| [Express ์ ๋ฌธ] ์น ์๋ฒ ํ๋ ์ ์ํฌ express๋? (0) | 2021.01.20 |
| [Node] ๋ธ๋ผ์ฐ์ ๋ฐ์ JavaScript (0) | 2021.01.20 |