Выбор ответа Middle Модули и npm обновлено
Поле exports в package.json
Вопрос
В пакете my-lib есть "exports": { ".": "./dist/index.js" }. Что будет при import x from "my-lib/dist/helpers.js"?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка ERRPACKAGEPATHNOTEXPORTED. Поле exports перечисляет публичные точки входа и закрывает всё остальное, и для import, и для require.
Варианты ответа
- Импорт сработает, ведь файл существует
- Сработает только в CommonJS
- Ошибка
ERR_PACKAGE_PATH_NOT_EXPORTEDправильный ответ - Node вернёт
./dist/index.jsвместо запрошенного файла
Разбор
Поле exports перечисляет публичные точки входа и закрывает всё остальное, и для import, и для require. Так автор пакета защищает внутренние файлы от использования.
- Наличие файла не важно, если путь не объявлен в
exports. - Ограничение действует для обеих систем модулей.
- Подмены пути на главный файл нет, будет ошибка.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.