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

Как Node понимает, что .js это ESM

Вопрос

Файлы проекта .js написаны с import/export. Как явно сообщить Node.js, что их нужно выполнять как ES-модули?

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

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

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

Коротко

Правильный ответ: Добавить "type": "module" в package.json проекта. Для .js формат определяет поле type ближайшего package.json.

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

  1. Запускать с флагом --input-type=module
  2. Запускать с флагом --harmony
  3. Добавить "type": "module" в package.json проектаправильный ответ
  4. Добавить в начало каждого файла директиву "use module"

Разбор

Для .js формат определяет поле type ближайшего package.json. Альтернатива для отдельных файлов: расширение .mjs. Node 22 умеет и сам догадаться по синтаксису, но это запасной механизм с лишним разбором файла, в проектах формат задают явно.

  • --harmony включал экспериментальные возможности V8 и к модулям отношения не имеет.
  • --input-type действует только на код из --eval и stdin, не на файлы.
  • Директивы "use module" не существует.

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

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

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