Spec-Zone.ru › Deno 2

Метаданные модуля

Понятия

  • import.meta может предоставлять информацию о контексте модуля.
  • Логическое значение import.meta.main позволяет узнать, является ли текущий модуль точкой входа программы.
  • Строка import.meta.url содержит URL текущего модуля.
  • Строка import.meta.filename содержит полный разрешённый путь к текущему модулю. Только для локальных модулей.
  • Строка import.meta.dirname содержит полный разрешённый путь к каталогу, в котором находится текущий модуль. Только для локальных модулей.
  • import.meta.resolve позволяет разрешить спецификатор относительно текущего модуля. Эта функция учитывает карту импорта (если она была задана при запуске).
  • Строка Deno.mainModule содержит URL главного модуля, являющегося точкой входа, то есть модуля, запущенного средой выполнения deno.

Пример

В приведённом ниже примере используются два модуля, чтобы показать различия между import.meta.url, import.meta.main и Deno.mainModule. В этом примере module_a.ts является главным модулем — точкой входа:

module_b.ts
export function outputB() {
  console.log("Module B's import.meta.url", import.meta.url);
  console.log("Module B's mainModule url", Deno.mainModule);
  console.log(
    "Is module B the main module via import.meta.main?",
    import.meta.main,
  );
}
module_a.ts
import { outputB } from "./module_b.ts";

function outputA() {
  console.log("Module A's import.meta.url", import.meta.url);
  console.log("Module A's mainModule url", Deno.mainModule);
  console.log(
    "Is module A the main module via import.meta.main?",
    import.meta.main,
  );
  console.log(
    "Resolved specifier for ./module_b.ts",
    import.meta.resolve("./module_b.ts"),
  );
}

outputA();
console.log("");
outputB();

Если module_a.ts находится в /home/alice/deno, то вывод deno run --allow-read module_a.ts будет таким:

Module A's import.meta.url file:///home/alice/deno/module_a.ts
Module A's mainModule url file:///home/alice/deno/module_a.ts
Is module A the main module via import.meta.main? true
Resolved specifier for ./module_b.ts file:///home/alice/deno/module_b.ts

Module B's import.meta.url file:///home/alice/deno/module_b.ts
Module B's mainModule url file:///home/alice/deno/module_a.ts
Is module B the main module via import.meta.main? false

Последнее обновление: 10 марта 2025 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials/module_metadata

Spec-Zone.ru

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