ReferenceError: require is not defined in ES module scope, you can use import instead

SP Yoon - Error Note·2022년 12월 6일
1

Error Note

목록 보기
2/6

ReferenceError: require is not defined in ES module scope, you can use import instead

  • 증상:

    • package.json파일 없이 .js파일만 있는 환경에서 node명령어로 실행시 해당 에러 발생
  • 원인:

    • 현재 실행하고 있는 환경이 CommonJS 환경이 아니여서 문법오류가 발생한것이다.
      • package.json 파일없을 경우 (ES6 형식으로 실행되는듯)
      • package.json의 "type" 필드 값이 "commonjs" 가 아닐경우
  • 해결: 아래 방법 중 하나를 선택하자.

    • package.json 생성
      package.json의 "type"필드는 디폴트값이 commonjs이기 때문에 만들어주기만 하면 된다.

      $ npm init
    • package.json의 'type' 필드값 바꾸기

      {								{
      	...								...
        	"type": "module"     ->   		"type": "commonjs"
      	...								...						
      }								}
      
    • require() 대신 import 사용하기
      commonJS 문법이 아닌 ES6의 문법을 사용하는 방법이다.
      package.json조차 필요없는 테스트환경이나 프로젝트 환경을 바꿀수 없는 경우 이방식을 선택하면 될듯하다.

      		//const fs = require('fs');
      		import * as fs from 'fs';



*require()와 import를 동시에 사용할수 있는 방법도 있다. 이 방법은 다른분들의 더 좋은 글을 참고하자...

0개의 댓글