import 시 unexpected identifer 에러
const bodyParser = require('body-paraser')import bodyParser from 'body-parser'
^^^^^^^^^^SyntaxError: Unexpected identifier
일반적으로 node 예제들을 보면
express 등 모듈들을 require문을 통해서 불러오고 있다.
그러나 import문도 가끔 써봐서 써보려고 하니 이런 에러가 발생.
원인은 무엇일까?
일단 해결방법은
바벨 패키지와 .babelrc 적용을 통해서
import를 사용할 수 있도록 하고 있다.
구체적으로 어떤 문제였고 어떠한 해결방식을 취한걸까?
최근 브라우저에서 모듈을 가져오거나 내보낼 때 사용하는
import/export 를 node.js에서는 사용할 수 없다.
node.js 에서는 기본적으로 module 을 지원하고 있었으며,
common module 방식이라는 이름으로
require/exports 을 이용해 유사한 기능을 할 수 있다.
그러나 es6이상의 js에서는 AMD(Asynchronous Module Definition)
방식의 모듈시스템을 표준으로 사용한다.
module.export , import, export로 알고있는 바로 그 방식이다.
해당 방식의 모듈시스템을 node에서 사용하기 위해서는
experimental-modules라는 옵션을 node에 적용하거나,
babel과 같은 transfile 패키지를 적용해야 한다.
babel 은 transfiling을 담당하는 패키지이다.
es6이상의 문법으로 작성된 js구문을 es5버젼으로 번역(transfile)하여,
common js방식의 모듈시스템에서 돌아갈 수 있도록 하는 것이다.
babel의 구체적인 적용방법은
해당 주소로 갈음한다.
결론:
node.js는 commonjs의 모듈시스템을 표준으로 하고있고,
amd(Es6)방식의 모듈시스템을 사용하기 위해서는 추가 작업이 필요하다.