SyntaxError: Cannot use import statement outside a module
해당 오류와 함께 node.js의 실행에 오류가 생기는 경우가 있습니다.
위의 사진의 경우는 node.js에서 ES Modules 방식의 import를 사용해서 생긴 오류입니다.
해결방법
package.json에서 type을 module로 설정해줍니다.
가장 쉬운 해결 방법입니다.
{
"name": "project-name",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.1"
},
"type": "module"
}
위와 같이 type:"module"을 추가하면 됩니다.
정상적으로 작동합니다.
다른 해결 방법
애초에 import / export를 사용하지 않고, require를 사용합니다.
const express = require('express');
mjs 사용하기
파일 확장자로 mjs를 사용하며, 이를 import할 때 mjs확장자까지 사용을 하면, import/export 사용이 가능합니다.
왜 node.js에서 기본적으로 import / export를 사용할 수 없는 것일까요?
node.js에서는 기본적으로 CommonJS 방식의 모듈화를 사용합니다. 그래서 위와같은 방법을 사용해야 ES Modules 방식을 사용할 수 있습니다.