TroubleShooting/nodejs

[Nodejs] Cannot use import statement outside a module

나인에스 2022. 3. 16. 15:16

1. 증상

import {scooterList} from './scooterList'

프로젝트의 JS파일 내에서 위와 같이 import keyword를 이용해서 모듈을 가져올때에 발생하는 에러.

2. 원인

import, export keyword의 경우 ES6부터 지원을 한다.(기존에는 require, module.exports를 사용) 그리고, 해당 키워드는 Node에서 default로 지원하지 않기 때문에 사용하겠다는것을 명시적으로 선언(?) 해줘야 한다.

3. 해결방법

두가지 방법이 있으나 여기에서는 프로젝트 전체에 해당 ES module를 사용하는 방법을 설명한다.

package.json 파일에 아래와 같이 "type":"module"를 넣어주면 프로젝트 전체에 ES module를 적용하게 된다.

{
	...
	"type": "module"
	...
}

 

p.s : 다른 하나의 방법은 각 파일별로 적용하는 방법이고 확장자를 .mjs로 변경하는 방법이다. 다만 이경우 module을 import할때에 확장자 명까지 명시를 해줘야하고 default module(ex. time.js)이 자동으로 import되지 않기 때문에 이 또한 명시적으로 import해야하는 불편함이 있다.