CommonJS
문법 : require() 함수, module.exports 객체 사용
로딩 방식 : 동기적 로딩
스코프 : 모듈은 전역 스코프에서 실행
단일 인스턴스 : 모듈은 기본적으로 한 번만 로드되며, 같은 모듈을 여러 곳에서 require() 해도 동일한 인스턴스 사용.
ES모듈 (ECMAScript)
문법 : import 문, export 키워드 사용
로딩 방식 : 비동기적 로딩, 모듈이 로드되기를 기다리지 않고도 다음 코드 실행 가능
스코프 : 기본적으로 모듈 스코프
각기 다른 인스턴스 : 같은 모듈을 다시 import 하면 새로운 인스턴스 생성
- CommonJS 모듈 사용 예시
//find.js
function find(param0, param1) {
}
module.exports = { find };
//game.js
const { find } = require("./find");
console.log(find("198402", 1));
console.log(find("200008", 8));
console.log(find("199004", 5));
위 코드를 ES 모듈로 바꾸면 아래 오류 발생
> node:310424) 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)
GPT의 답변 :
CommonJS 모듈 시스템에서 지원되지 않는 ES 모듈을 사용하려고 할 때 발생합니다. Node.js의 기본 설정에서는 .js 확장자를 가진 파일에서는 import 대신 require를 사용해야 합니다. 따라서 import find from "./find"; 구문을 CommonJS 스타일로 변경해야 합니다.
또는 package.json파일에 추가
{
"type": "module"
}
'JS.TS' 카테고리의 다른 글
javascript로 XML 태그, 속성 분석하기 (0) | 2024.07.17 |
---|---|
객체 배열과 인스턴스 메소드 / 정규 표현식과 match, parseInt / 문자열 포맷팅 (0) | 2024.07.15 |
자바스크립트 기본 문법 (자료형) (0) | 2024.06.25 |
자바스크립트 기본 문법 (입출력) (0) | 2024.06.23 |
react Context (0) | 2024.05.12 |