Spec-Zone.ru › JavaScript

import.meta

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с мая 2018 года.

Мета-свойство import.meta предоставляет контекстно-зависимые метаданные JavaScript-модулю. Оно содержит информацию о модуле, например, URL-адрес модуля.

Синтаксис

import.meta

Значение

Объект import.meta создается хост-средой как расширяемый объект null-прототипа, в котором все свойства доступны для записи, настройки и перечисления. Спецификация не указывает, какие свойства должны быть на нём определены, но хосты обычно реализуют следующие свойства:

url
Полный URL-адрес модуля, включая параметры запроса и/или хеш (следуя ? или #). В браузерах это либо URL-адрес, с которого был получен скрипт (для внешних скриптов), либо URL-адрес содержащего его документа (для встроенных скриптов). В Node.js это путь к файлу (включая протокол file://).
resolve
Разрешает спецификатор модуля в URL, используя URL текущего модуля в качестве базы.

Описание

Синтаксис import.meta состоит из ключевого слова import, точки и идентификатора meta. Поскольку import является зарезервированным словом, а не идентификатором, это не акцессор свойства, а специальный синтаксис выражения.

Мета-свойство import.meta доступно в JavaScript-модулях; использование import.meta вне модуля (включая прямой eval() внутри модуля) является синтаксической ошибкой.

Примеры

Передача параметров запроса

Использование параметров запроса в спецификаторе import позволяет передавать аргументы, специфичные для модуля, что может дополнять чтение параметров из общеприкладного window.location (или в Node.js, через process.argv). Например, со следующим HTML:

<script type="module">
  import "./index.mjs?someURLInfo=5";
</script>

Модуль index.mjs может получить параметр someURLInfo через import.meta:

// 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

Реализация ES-модулей в Node.js поддерживает разрешение спецификаторов модулей, содержащих параметры запроса (или хеш), как в последнем примере. Однако вы не можете использовать запросы или хеши, когда модуль указывается через команду CLI (например, node index.mjs?someURLInfo=5), потому что точка входа CLI использует режим разрешения, более похожий на CommonJS, обрабатывая путь как путь к файлу, а не как URL. Чтобы передать параметры модулю точки входа, используйте аргументы CLI и считывайте их через process.argv (например, node index.mjs --someURLInfo=5).

Разрешение файла относительно текущего

В модулях CommonJS Node.js существует переменная __dirname, которая содержит абсолютный путь к папке, содержащей текущий модуль, что полезно для разрешения относительных путей. Однако ES-модули не могут иметь контекстных переменных, за исключением import.meta. Поэтому для разрешения относительного файла вы можете использовать import.meta.url. Обратите внимание, что здесь используются URL-адреса, а не пути файловой системы.

До (CommonJS):

const fs = require("fs/promises");
const path = require("path");

const filePath = path.join(__dirname, "someFile.txt");
fs.readFile(filePath, "utf8").then(console.log);

После (ES-модули):

import fs from "node:fs/promises";

const fileURL = new URL("./someFile.txt", import.meta.url);
fs.readFile(fileURL, "utf8").then(console.log);

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# prod-ImportMeta

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
import_meta
64
79
62
51
11.1
64
62
47
12
9.0
64
12
1.0.0
1.0
10.4.0
resolve
105
105
106
91
16.4
105
106
72
16.4
20.0
105
16.4
1.0.0
1.24
20.8.0
20.6.0–20.8.0Возвращает объект URL вместо строки.
18.19.0–19.0.0

Смотрите также

  • import
  • export

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API