Node.js에서 모듈을 내보내고(export) 불러와서(import) 사용하는 방법을 다루는 글입니다. 네파트로 나뉘어있습니다.
- PART1 - module.exports (feat. CommonJS)
- PART2 - export/import with .mjs (feat. ES6)
- PART3 - { type: module }
- PART4 - export/import with babel (feat. prisma client)
ES Modules - (import/export)
PART1에서 사용했던 문법을 import/export 문법으로 변경해보자. 파일 구성은 아래와 같다.
-
ex1_greetings.js : 인사말을 변수로 저장해둔 모듈
// ./ex1_greetings.js const greeting = 'Hello! Nice to meet you, '; module.exports = greeting;
-
ex2_sayHello.js : 인사하는 함수를 선언하고 실행할 모듈
// ./ex2_sayHello.js const greeting = require('./ex1_greetings'); const sayHello = (name) => { return greeting + name; }; console.log(sayHello('이워크'));
require 대신 import 문법으로 가져오기
ex2
모듈에 적용하고 싶은 ES 모듈 import 문법은 아래와 같다.
// ./ex2_sayHello.js
import greeting from './ex1_greetings';
const sayHello = (name) => {
return greeting + name;
};
console.log(sayHello('이워크'));
이대로 실행해보면, 다음과 같은 에러를 만난다.
(node:51915) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/soheonlee/Development/JS_module_tutorial/ex2_sayHello.js:2
import greeting from "./ex1_greeting.js";
^^^^^^
SyntaxError: Cannot use import statement outside a module