Метаданные модуля
Понятия
- 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
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials/module_metadata