Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年1月以降、すべてのブラウザーで利用可能です。
import.meta オブジェクトはコンテキスト固有のメタデータを JavaScript のモジュールに公開します。これには、モジュールの URL のようなモジュールに関する情報が含まれています。
import.meta オブジェクトはホスト環境によって生成され、拡張可能な null プロトタイプオブジェクトとして、すべてのプロパティが書き込み可能、構成不可、列挙可能となります。仕様では定義すべきプロパティは指定されていませんが、ホストは通常次のプロパティを実装します。
urlモジュールの完全な URL。クエリーの引数やハッシュ(? または #)を含みます。ブラウザーでは、これはスクリプトが取得された URL (外部スクリプトの場合)か、包含文書の URL (インラインスクリプトの場合)のいずれかです。 Node.js では、これはファイルパス(file:// プロトコルを含む)です。
resolve現在のモジュールの URL を基点として、モジュール指定子を URL に解決します。
import.meta 構文は、キーワード import、ドット、識別子 meta で構成されます。 import は識別子ではなく予約語であるため、これはプロパティアクセサーではなく、特別な式構文です。
import.meta メタプロパティは JavaScript でモジュール内で利用できます。モジュール外(モジュール内の 直接 eval() を含む)で import.meta を使用すると構文エラーになります。
import指定子で引数を指定することで、モジュール固有の引数渡しが可能になります。これは、アプリケーション全体の window.location (Node.js では process.argv 経由)から引数を取得する手法を補完するものです。例えば、以下の HTML では、
index.mjs モジュールは、import.meta を通じて someURLInfo 引数を取得できます。
ファイルが別のファイルをインポートする場合も同様です。
Node.js の ES モジュール実装は、後者の例のようにクエリー引数(またはハッシュ)を含むモジュール指定子の解決に対応状況を示しています。ただし、 CLI コマンド(例えば node index.mjs?someURLInfo=5)でモジュールを指定する場合、クエリーやハッシュは使用できません。 CLI のエントリーポイントは CommonJS に似た解決モードを採用しており、パスを URL ではなくファイルパスとして扱うためです。エントリポイントモジュールに引数を渡すには、同様に CLI 引数を使用し、 process.argv を通じて読み取ってください(例: node index.mjs --someURLInfo=5)。
Node.js の CommonJS モジュールでは、現在のモジュールを含むフォルダー内の絶対パスを保持する __dirname 変数が存在し、相対パスの解決に有用です。一方、ESモジュールでは import.meta を除きコンテキスト変数を使用することはできません。そのため、相対ファイルを解決するには import.meta.url を使用することができます。これはファイルシステムパスではなく URL が使用されています。
使用前 (CommonJS):
使用後 (ES modules):
| ECMAScript® 2027 Language Specification # prod-ImportMeta |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。