--- title: import.meta slug: Web/JavaScript/Reference/Statements/import.meta tags: - JavaScript - Language feature - Modules - Reference - Statement - import - import.meta translation_of: Web/JavaScript/Reference/Statements/import.meta ---
import.meta
オブジェクトはコンテキスト固有のメタデータを JavaScript のモジュールに公開します。これには、モジュールの URL のようなモジュールに関する情報が含まれています。
import.meta
構文は、import
キーワードとドット、プロパティ名の meta
で構成されています。通常、ドットの左側はプロパティアクセスが実行されるオブジェクトですが、ここでの import
はオブジェクトではありません。
import.meta
オブジェクトは ECMAScript 実装によって生成され、プロトタイプは {{jsxref("null")}} です。オブジェクトは拡張でき、そのプロパティは書き込み、構成、列挙可能です。
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 |
{{SpecName("HTML WHATWG", "webappapis.html#hostgetimportmetaproperties", "import.meta")}} |
{{Compat("javascript.statements.import_meta")}}