Etc./Node.js

[Node.js]import express from 'express'; 오류

코드스토리 2022. 7. 2. 21:29

nodeJS-node-index.js

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"을 추가하면 됩니다.

run-index.js

정상적으로 작동합니다.


다른 해결 방법

애초에 import / export를 사용하지 않고, require를 사용합니다.

const express = require('express');

 

mjs 사용하기

파일 확장자로 mjs를 사용하며, 이를 import할 때 mjs확장자까지 사용을 하면, import/export 사용이 가능합니다.

 

왜 node.js에서 기본적으로 import / export를 사용할 수 없는 것일까요?

node.js에서는 기본적으로 CommonJS 방식의 모듈화를 사용합니다. 그래서 위와같은 방법을 사용해야 ES Modules 방식을 사용할 수 있습니다.