本頁面內容
不穩定的功能標誌
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
中的設定選項,指定您想要為專案啟用的不穩定功能。
{
"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 套件。
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
- package.json 沒有
"type"
欄位。 - 沒有 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
此標誌啟用從不包含副檔名的匯入推斷檔案副檔名的行為。通常,以下匯入語句會產生錯誤
import { Example } from "./bar";
console.log(Example);
export const Example = "Example";
使用啟用寬鬆匯入執行的腳本將消除錯誤,但會提供應使用更高效能語法的指南。
寬鬆匯入將允許(但會印出警告)以下情況
- 從匯入中省略檔案副檔名
- 使用不正確的檔案副檔名(例如,當實際檔案為
.ts
時,使用.js
副檔名匯入) - 匯入目錄路徑,並自動使用
index.js
或index.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-kv
--unstable-cron
請改用這些功能標誌。
在較新的 Deno 版本 (1.38+) 之前,不穩定的 API 使用 --unstable
標誌一次性提供。值得注意的是,Deno KV 和其他雲端基本 API 在此標誌後方提供。若要執行可存取這些不穩定功能的程式,您可以使用以下命令執行腳本
deno run --unstable your_script.ts
建議您改用更細緻的不穩定標誌,--unstable
標誌現在已棄用,並將在 Deno 2 中移除。