import.meta オブジェクトはコンテキスト固有のメタデータを JavaScript のモジュールに公開します。これには、モジュールの URL のようなモジュールに関する情報が含まれています。
構文
import.meta
説明
構文は、import キーワードとドット、プロパティ名の meta で構成されています。通常、ドットの左側はプロパティアクセスが実行されるオブジェクトですが、ここでの import はオブジェクトではありません。
import.meta オブジェクトは ECMAScript 実装によって生成され、プロトタイプは null です。オブジェクトは拡張でき、そのプロパティは書き込み、構成、列挙可能です。
例
import.meta を使用する
my-module.mjs モジュールを指定します。
<script type="module" src="my-module.js"></script>
import.meta オブジェクトを使用してモジュールのメタ情報にアクセスできます。
console.log(import.meta); // { url: "file:///home/user/my-module.js" }
モジュールのベース URL を示す url プロパティを持つオブジェクトを返します。これは、外部スクリプトの場合はスクリプトを取得した URL、インラインスクリプトの場合はそれを含むドキュメントのベース URL です。
これには、クエリパラメータまたはハッシュ(つまり、? または #)が含まれることに注意してください。
例えば、以下のような HTML で
<script type="module">
import './index.mjs?someURLInfo=5';
</script>
以下の JavaScript ファイルは、someURLInfo パラメータをログに記録します。
// index.mjs
new URL(import.meta.url).searchParams.get('someURLInfo'); // 5
ファイルが別のファイルをインポートする場合も同様です。
// index.mjs
import './index2.mjs?someURLInfo=5';
// index2.mjs
new URL(import.meta.url).searchParams.get('someURLInfo'); // 5
メモ: 後者の例のように Node.js はクエリパラメータ(またはハッシュ)を渡しますが、Node 14.1.0 以降、クエリパラメータを持つ URL を node --experimental-modules index.mjs?someURLInfo=5 という形式で読み込むとエラーになることに注意してください(この文脈では URL ではなくファイルとして扱われます)。
このようなファイル固有の引数の受け渡しは、アプリケーション全体の location.href(HTML ファイルパスの後にクエリ文字列やハッシュを追加したもの [Node.js では process.argv を介して])で使用されているものを補完する場合があります。
仕様
| 仕様書 |
|---|
import.meta proposal |
| HTML Living Standard import.meta の定義 |
ブラウザー実装状況
BCD tables only load in the browser
実装の進捗状況
この機能はまだブラウザー間の安定性に達していないため、以下の表で、この機能の毎日の実装状況を示しています。このデータは、JavaScript の標準テストスイートである Test262 で、ナイトリービルド、または各ブラウザーの JavaScript エンジンの最新リリースで、関連する機能テストを実行することで生成されます。