Разрешение модулей в Node и браузерных сборщиках
Узнайте, как разрешаются импорты: относительные и краткие спецификаторы, расширения файлов (.js/.mjs/.cjs), индексные файлы и простые точки входа пакетов
«Разрешение модулей в Node и браузерных сборщиках» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.
Общая картина
Цель: понимать, как разрешаются пути импорта.
- Относительные и непосредственные спецификаторы
- Использовать явное расширение .js (безопасный вариант по умолчанию)
- index.js в папках
- Точки входа пакета (main/exports, вкратце)

Относительные и непосредственные импорты
Относительные импорты начинаются с ./ или ../. Непосредственные импорты указывают на установленные пакеты.
// Relative path imports start with ./ or ../
// Bare specifiers refer to packages installed (e.g., "lodash")
const examples = [
"import { sum } from \\"./math.js\\"; // relative, file nearby",
"import leftPad from \\"left-pad\\"; // bare, from node_modules",
"import thing from \\"../lib/thing.js\\"; // parent folder"
];
console.log("specifiers:");
for (const line of examples) console.log(line);
Расширения имеют значение
Добавляйте расширение .js в ESM, чтобы избежать ошибок разрешения путей. Также могут встречаться .mjs или .cjs.
// Include file extensions for ESM (safe beginner habit)
const extTips = [
"Good (ESM): import util from \\"./util.js\\"",
"Also seen: .mjs for ESM files, .cjs for CJS files",
"Avoid: import \\"./util\\" (may fail in Node/browsers)"
];
console.log("extensions:");
for (const t of extTips) console.log(t);
Папки и index.js
Папки часто предоставляют index.js. Явная запись (.../index.js) понятнее для начинающих.
// If you import a folder, many setups look for index.js inside it
const folderExample = [
"my-lib/",
" index.js",
" helpers/",
" index.js"
];
for (const l of folderExample) console.log(l);
// Typical imports
const dirImports = [
"import main from \\"./my-lib/index.js\\";",
"import alsoMain from \\"./my-lib/\\"; // some setups resolve to index.js",
"import helper from \\"./my-lib/helpers/index.js\\";"
];
console.log("imports:");
for (const l of dirImports) console.log(l);
Точки входа пакета
Пакеты объявляют точки входа через main/exports. Непосредственные импорты выбирают нужный файл для ESM или CJS.
// Installed packages declare entry points in package.json
const pkgJson = [
"{",
" \\"name\\": \\"tiny-lib\\",",
" \\"main\\": \\"dist/cjs/index.cjs\\",",
" \\"exports\\": {",
" \\".\\": { \\"import\\": \\"./dist/esm/index.js\\", \\"require\\": \\"./dist/cjs/index.cjs\\" }",
" }",
"}"
];
console.log("package.json entry (example):");
for (const l of pkgJson) console.log(l);
// Importing a bare specifier will use these fields
console.log("import tiny-lib -> resolves to ESM or CJS entry depending on environment");
Советы и подводные камни
Советы:
- Для локальных файлов отдавайте предпочтение относительным путям с .js.
- Используйте непосредственные импорты только для установленных пакетов.
- Явно указывайте index.js, чтобы избежать неоднозначности.
- В браузере импорты должны быть допустимыми URL (часто с расширениями).

Тест по основам разрешения путей
Быстрая проверка: безопасный путь локального импорта.

Повторение
Повторение: локальные файлы → ./file.js. Пакеты → непосредственные имена. Папки часто разрешаются в index.js. Знание этих правил делает импорты простыми и предсказуемыми.

Часто задаваемые вопросы
Урок «Разрешение модулей в Node и браузерных сборщиках» бесплатный?
Да — полный текст урока «Разрешение модулей в Node и браузерных сборщиках» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Разрешение модулей в Node и браузерных сборщиках»?
Узнайте, как разрешаются импорты: относительные и краткие спецификаторы, расширения файлов (.js/.mjs/.cjs), индексные файлы и простые точки входа пакетов Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Разрешение модулей в Node и браузерных сборщиках»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы ESM — import/export, экспорт по умолчанию и именованный
- Основы CommonJS — require/module.exports и exports
- Разрешение модулей в Node и браузерных сборщиках