deno.com
本頁面內容

不穩定的功能標誌

Deno 執行階段環境的新功能通常會以功能標誌的形式發布,以便使用者在正式發布前試用新的 API 和功能。目前不穩定的功能標誌列在本頁面,也可以透過執行以下命令在 CLI 說明文字中找到

deno --help

在命令列中使用標誌 Jump to heading

當您從命令列執行 Deno 程式時,可以透過將標誌作為 CLI 的選項傳遞來啟用功能標誌。以下是以啟用 --unstable-node-globals 標誌執行程式的範例

deno run --unstable-node-globals main.ts

deno.json 中設定標誌 Jump to heading

您可以使用 deno.json 中的設定選項,指定您想要為專案啟用的不穩定功能。

deno.json
{
  "unstable": ["bare-node-builtins", "webgpu"]
}

unstable 陣列中的可能值是移除 --unstable- 前綴的標誌名稱。

透過環境變數設定 Jump to heading

某些標誌可以透過為給定名稱的環境變數設定值(任何值)來啟用,而不是作為標誌或 deno.json 設定選項傳遞。可透過環境變數設定的標誌將在下方註明。

以下是透過環境變數設定 --unstable-bare-node-builtins 標誌的範例

export DENO_UNSTABLE_BARE_NODE_BUILTINS=true

--unstable-bare-node-builtins Jump to heading

環境變數: DENO_UNSTABLE_BARE_NODE_BUILTINS

此標誌讓您可以匯入 Node.js 內建模組,而無需 node: 指定符,如下例所示。如果您手動管理 Node.js 依賴性(請參閱 byonm 標誌),您也可以使用此標誌來啟用沒有 npm: 指定符的 npm 套件。

example.ts
import { readFileSync } from "fs";

console.log(readFileSync("deno.json", { encoding: "utf8" }));

--unstable-detect-cjs Jump to heading

環境變數: DENO_UNSTABLE_DETECT_CJS

在以下額外情境中,將 .js.jsx.ts.tsx 模組載入為可能為 CommonJS

  1. package.json 沒有 "type" 欄位。
  2. 沒有 package.json 存在。

預設情況下,只有當您在具有 package.json 的專案中,且最接近的 package.json 具有 { "type": "commonjs" } 時,Deno 才會將這些模組載入為可能為 CommonJS。

需要 Deno >= 2.1.2

--unstable-node-globals Jump to heading

此標誌將 Node 特定的全域變數注入到全域作用域中。注入的全域變數為

  • Buffer
  • global
  • setImmediate
  • clearImmediate

請注意,從 Deno 2.0 開始,process 已作為全域變數提供。

需要 Deno >= 2.1.0

--unstable-sloppy-imports Jump to heading

環境變數: DENO_UNSTABLE_SLOPPY_IMPORTS

此標誌啟用從不包含副檔名的匯入推斷檔案副檔名的行為。通常,以下匯入語句會產生錯誤

foo.ts
import { Example } from "./bar";
console.log(Example);
bar.ts
export const Example = "Example";

使用啟用寬鬆匯入執行的腳本將消除錯誤,但會提供應使用更高效能語法的指南。

寬鬆匯入將允許(但會印出警告)以下情況

  • 從匯入中省略檔案副檔名
  • 使用不正確的檔案副檔名(例如,當實際檔案為 .ts 時,使用 .js 副檔名匯入)
  • 匯入目錄路徑,並自動使用 index.jsindex.ts 作為該目錄的匯入

deno compile 不支援寬鬆匯入。

--unstable-unsafe-proto Jump to heading

Deno 出於安全考量,有意識地決定不支援 Object.prototype.__proto__。然而,仍然有許多 npm 套件依賴此屬性才能正常運作。

此標誌啟用此屬性。請注意,不建議使用此屬性,但如果您真的需要使用依賴它的套件,現在可以使用此應急方案。

--unstable-webgpu Jump to heading

在全域作用域中啟用 WebGPU API,如同在瀏覽器中一樣。以下是一個簡單的範例,使用此 API 取得關於 GPU 的基本資訊

// Try to get an adapter from the user agent.
const adapter = await navigator.gpu.requestAdapter();
if (adapter) {
  // Print out some basic details about the adapter.
  const adapterInfo = await adapter.requestAdapterInfo();

  // On some systems this will be blank...
  console.log(`Found adapter: ${adapterInfo.device}`);

  // Print GPU feature list
  const features = [...adapter.features.values()];
  console.log(`Supported features: ${features.join(", ")}`);
} else {
  console.error("No adapter found");
}

查看 此儲存庫 以取得更多使用 WebGPU 的範例。

--unstable-broadcast-channel Jump to heading

啟用此標誌使 BroadcastChannel Web API 可在全域作用域中使用,如同在瀏覽器中一樣。

--unstable-worker-options Jump to heading

啟用不穩定的 Web Worker API 選項。具體而言,它讓您可以指定 Worker 可用的權限

new Worker(`data:application/javascript;base64,${btoa(`postMessage("ok");`)}`, {
  type: "module",
  deno: {
    permissions: {
      read: true,
    },
  },
}).onmessage = ({ data }) => {
  console.log(data);
};

--unstable-cron Jump to heading

啟用此標誌使 Deno.cron API 在 Deno 命名空間中可用。

--unstable-kv Jump to heading

啟用此標誌使 Deno KV API 在 Deno 命名空間中可用。

--unstable-net Jump to heading

Deno 命名空間中啟用不穩定的網路 API。這些 API 包括

--unstable-otel Jump to heading

為 Deno 啟用 OpenTelemetry 整合

--unstable Jump to heading

--unstable 已棄用 - 請改用更細緻的標誌

--unstable 標誌不再用於新功能,並將在未來的版本中移除。使用此標誌可用的所有不穩定功能現在都以更細緻的不穩定標誌提供,特別是

  • --unstable-kv
  • --unstable-cron

請改用這些功能標誌。

在較新的 Deno 版本 (1.38+) 之前,不穩定的 API 使用 --unstable 標誌一次性提供。值得注意的是,Deno KV 和其他雲端基本 API 在此標誌後方提供。若要執行可存取這些不穩定功能的程式,您可以使用以下命令執行腳本

deno run --unstable your_script.ts

建議您改用更細緻的不穩定標誌,--unstable 標誌現在已棄用,並將在 Deno 2 中移除。

您找到需要的資訊了嗎?

隱私權政策