跳至主要內容

Node.js 內建 API

Deno Deploy 原生支援透過 node: 規格符號匯入內建 Node.js 模組,例如 fspathhttp。這允許在 Deno Deploy 中執行最初為 Node.js 編寫的程式碼,而無需變更。

以下是 Node.js HTTP 伺服器在 Deno Deploy 上執行的範例

import { createServer } from "node:http";
import process from "node:process";

const server = createServer((req, res) => {
const message = `Hello from ${process.env.DENO_REGION} at ${new Date()}`;
res.end(message);
});

server.listen(8080);

您可以在此處看到此範例的實際運作:https://dash.deno.com/playground/node-specifiers

使用 node: 規格時,Deno Deploy 的所有其他功能仍然可用。例如,即使使用 Node.js 模組,您也可以使用 Deno.env 存取環境變數。您也可以像往常一樣從外部網址匯入其他 ESM 模組。

下列 Node.js 模組可用

  • assert
  • assert/strict
  • async_hooks
  • buffer
  • child_process
  • cluster
  • console
  • constants
  • crypto
  • dgram
  • diagnostics_channel
  • dns
  • dns/promises
  • domain
  • events
  • fs
  • fs/promises
  • http
  • http2
  • https
  • module
  • net
  • os
  • path
  • path/posix
  • path/win32
  • perf_hooks
  • process
  • punycode
  • querystring
  • readline
  • stream
  • stream/consumers
  • stream/promises
  • stream/web
  • string_decoder
  • sys
  • timers
  • timers/promises
  • tls
  • tty
  • url
  • util
  • util/types
  • v8
  • vm
  • worker_threads
  • zlib

在多數情況下,這些模組的行為應與 Node.js 相同。由於 Deno Deploy 的沙盒行為,有些功能不可用

  • 使用 child_process 執行二進位檔
  • 使用 worker_threads 產生執行緒
  • 使用 vm 建立內容並評估程式碼

注意:對於大多數使用案例來說,模擬 Node.js 模組已足夠,但尚未臻於完美。如果您遇到任何問題,請開啟問題