Node에서는 모듈을 불러올 때 require 함수를 사용해서 불러온다
require함수는 인자로 가져올 모듈의 경로를 적어주면된다
위 정보만 가지고 foo.js에서 bar.js를 모듈로 가져오는 연습을 해보자
//bar.js
const a = 'this is bar';
const b = 'b in bar';
// foo.js
const bar = require('./bar.js');
console.log(bar.a);
console.log(bar.b);
둘은 같은 디렉토리에 저장되어있다
이를 실행하면 어떻게 될까?
예상대로라면 bar에서 정의한 a와 b가 모두 출력되어야하지만 그렇게 작동하지 않는다
왜 일까? 이를 이해하기 위해서는 require의 작동 방식을 알아봐야하는데 대충 알아듣기 쉽게 설명하면
require함수는 인자로 받아온 파일을 읽어서 module.exports에 정보를 담은 뒤 그를 반환하는데
exports에 아무 정보도 담기지 않았기 때문에 undefined가 출력되는 것
이를 해결해주기위해서는 알아보았듯이 모듈에서 exports에 정보를 담아주면된다
//bar.js
const a = 'this is bar';
const b = 'b in bar';
exports.a = a;
exports.b = b;