default export *Module '"http"' has no default export. 에러 해결

김까치·2023년 5월 14일
0

배경 지식

default export

ECMAScript 6 (ES6)부터 JavaScript에는 default export라는 개념이 추가되었습니다. 모듈 내에서 default export는 해당 모듈에서 기본적으로 내보내는 것으로, import 문에서 명시하지 않으면 default export가 가져와집니다.

예를 들어, 다음과 같이 user.js 모듈에서 default export를 정의하면:

// user.js

export default {
  name: 'John',
  age: 30
};

다음과 같이 main.js 모듈에서 import 할 수 있습니다:

// main.js

import user from './user.js';

console.log(user.name); // "John"
console.log(user.age); // 30

위 코드에서 user 변수에는 user.js 모듈에서 내보낸 default export 객체가 할당됩니다.

한 모듈에서 default export는 하나만 존재할 수 있으며, default export가 없는 모듈에서는 named export를 사용하여 내보낸 항목들을 가져와야 합니다.

default export는 모듈에서 주요 항목을 단일 값으로 정의할 때 유용합니다. 함수, 클래스, 객체, 배열 등 모듈에서 단일 값으로 내보낼 때 사용할 수 있습니다.


오류 해결

Module '"http"' has no default export. 에러 해결

Node.js에서 http 모듈은 기본 내보내기(default export)가 없기 때문에, import 문에서 default 키워드를 사용할 수 없습니다.

// 잘못된 방법
import http from 'http'; // 에러: Module '"http"' has no default export.

// 올바른 방법
import * as http from 'http'; // 모든 것을 가져옴
// 또는
const http = require('http'); // require 문으로 가져옴

위와 같이 http 모듈을 가져오는 방법은 두 가지가 있습니다:

  1. 모든 것을 가져오기(import * as http from 'http'): 이 방법으로 http 모듈을 가져오면, http 객체의 메서드 및 속성에 접근할 때 http.을 사용해야 합니다. 예를 들어, http.createServer()를 호출할 때 http.을 사용해야 합니다.

  2. require 문 사용하기: 이 방법으로 http 모듈을 가져오면, http 객체를 직접 사용할 수 있습니다. 예를 들어, http.createServer()를 호출할 때 http.을 사용하지 않고 createServer()를 호출할 수 있습니다.

profile
개발자 연습생

0개의 댓글