import.meta

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 の定義

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
import.metaChrome 完全対応 64Edge 完全対応 79Firefox 完全対応 62IE 未対応 なしOpera 完全対応 51Safari 完全対応 11.1WebView Android 完全対応 64Chrome Android 完全対応 64Firefox Android 完全対応 62Opera Android 完全対応 47Safari iOS 完全対応 12Samsung Internet Android 完全対応 9.0nodejs 完全対応 10.4.0

凡例

完全対応  
完全対応
未対応  
未対応

実装の進捗状況

この機能はまだブラウザー間の安定性に達していないため、以下の表で、この機能の毎日の実装状況を示しています。このデータは、JavaScript の標準テストスイートである Test262 で、ナイトリービルド、または各ブラウザーの JavaScript エンジンの最新リリースで、関連する機能テストを実行することで生成されます。

関連情報