跳至主要内容

Node.js 内置 API

Deno Deploy 原生支持通过 node: 指定符导入 fspathhttp 等内置 Node.js 模块。这允许在 Deno Deploy 中运行最初为 Node.js 编写的代码,无需更改。

以下是一个在 Deno Deploy 上运行的 Node.js HTTP 服务器示例

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 访问环境变量。您也可以像往常一样从外部 URL 导入其他 ESM 模块。

以下 Node.js 模块可用

  • assert
  • assert/strict
  • async_hooks
  • buffer
  • child_process
  • 集群
  • 控制台
  • 常量
  • 加密
  • 数据报
  • 诊断通道
  • DNS
  • dns/promises
  • 事件
  • 文件系统
  • fs/promises
  • HTTP
  • HTTP/2
  • HTTPS
  • 模块
  • 网络
  • 操作系统
  • 路径
  • path/posix
  • path/win32
  • 性能钩子
  • 进程
  • Punycode
  • 查询字符串
  • 读取行
  • stream/consumers
  • stream/promises
  • stream/web
  • 字符串解码器
  • 系统
  • 计时器
  • timers/promises
  • TLS
  • 终端
  • URL
  • 实用工具
  • util/types
  • V8
  • 虚拟机
  • 工作线程
  • 压缩

在大多数情况下,这些模块的行为应该与 Node.js 相同。由于 Deno Deploy 的沙箱行为,某些功能不可用。

  • 使用 child_process 执行二进制文件
  • 使用 worker_threads 生成工作线程
  • 使用 vm 创建上下文并评估代码

注意:Node.js 模块的模拟足以满足大多数用例,但尚未完美。如果您遇到任何问题,请 打开一个问题