Nodeとブラウザのバンドラーにおけるモジュール解決
インポートが解決される仕組みを学びます。相対指定子とベア指定子、ファイル拡張子(.js/.mjs/.cjs)、indexファイル、基本的なパッケージのエントリポイントを扱います。
「Nodeとブラウザのバンドラーにおけるモジュール解決」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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);
拡張子の重要性
解決エラーを避けるため、ESMでは.js拡張子を追加します。.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時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。
「Nodeとブラウザのバンドラーにおけるモジュール解決」で何を学びますか?
インポートが解決される仕組みを学びます。相対指定子とベア指定子、ファイル拡張子(.js/.mjs/.cjs)、indexファイル、基本的なパッケージのエントリポイントを扱います。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「Nodeとブラウザのバンドラーにおけるモジュール解決」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ESMの基礎 — import/export、defaultとnamed
- CommonJSの基礎 — require/module.exportsとexports
- Nodeとブラウザのバンドラーにおけるモジュール解決