Выбор ответа Middle Модули и npm обновлено

Импорт CommonJS из ESM

Вопрос

Как ES-модуль получает module.exports CommonJS-модуля при import pkg from "./legacy.cjs"?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: pkg это весь module.exports. При импорте CommonJS-модуля default-экспортом всегда становится весь module.exports.

Варианты ответа

  1. pkg это весь module.exportsправильный ответ
  2. pkg это module.exports.default, иначе undefined
  3. Импорт CJS из ESM запрещён
  4. pkg это промис, его нужно ждать

Разбор

При импорте CommonJS-модуля default-экспортом всегда становится весь module.exports. Именованные импорты дополнительно работают, если Node статически распознал имена (например, exports.a = 1).

  • module.exports.default берут в default только при специальной разметке __esModule в некоторых сборщиках, а не в Node.
  • Импорт CJS из ESM разрешён.
  • Статический import не возвращает промис.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме