코딩/Node.js

[koa] Import / export syntax 적용하기

카슈밀 2024. 12. 9. 01:47
반응형

원래는 import, export를 무조건 esm 이라는 라이브러리를 이용해야했지만, 해당 문법이 이미 최신 node에서 사용이 가능하다.

 

즉 수정할 곳은 두곳인데, 한개도 생략이 가능하다.

 

// package.json 파일 추가

"type": "module"

 

아래가 생략이 가능한 부분.

// .eslintrc.json 

{
  "env": {
    "node": true,
    "es2021": true
  },
  "extends": ["eslint:recommended", "prettier"],
  "globals": {
    "Atomics": "readonly",
    "SharedArrayBuffer": "readonly"
  },
  "parserOptions": {
    "ecmaVersion": 2020,
    "sourceType": "module" // commonJs를 module로 변경한다.
  },
  "rules": {
    "no-unused-vars": ["warn", { "args": "none", "ignoreRestSiblings": true }],
    "no-console": "off",
    "prefer-const": "error",
    "no-var": "error",
    "eqeqeq": ["error", "always"],
    "arrow-spacing": ["error", { "before": true, "after": true }]
  }
}

 

 

해당 문법 사용할 경우 무조건 파일까지 import 해야한다.

 

기존에서 

app

 ㄴ api

      - index.js

라는 구조라면

 

기존  ./api 로 적어도 적용이되었다.

그런데 해당 import 적용시 ./api/index.js를 확실히 적어야한다.

 

그래야 작동오류가 없다.

 

찾아보다가 발견한 내용인데, CJS, ESM에 관련한 글이다
한번 봐도 재밌다.

https://toss.tech/article/commonjs-esm-exports-field

 

CommonJS와 ESM에 모두 대응하는 라이브러리 개발하기: exports field

Node.js에는 두 가지 Module System이 존재합니다. 토스 프론트엔드 챕터에서 운영하는 100개가 넘는 라이브러리들은 그것에 어떻게 대응하고 있을까요?

toss.tech

 

728x90