跳至主要內容

模組元資料

概念

  • import.meta 可提供模組內容的資訊。
  • 布林值 import.meta.main 會讓您知道目前的模組是否是程式進入點。
  • 字串 import.meta.url 會提供您目前的模組 URL。
  • 字串 import.meta.filename 會提供您目前模組的完整解析路徑。僅適用於本機模組
  • 字串 import.meta.dirname 會提供您目前模組所在目錄的完整解析路徑。僅適用於本機模組
  • import.meta.resolve 讓您能解析相對於目前模組的規格識別碼。此函式會考慮匯入地圖(如果在啟動時提供)。
  • 字串 Deno.mainModule 會提供您主模組進入點的 URL,也就是 deno 執行時期呼叫的模組。

範例

以下範例使用兩個模組來顯示 import.meta.urlimport.meta.mainDeno.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