Node.js 内置 API
Deno Deploy 原生支持通过 node:
指定符导入 fs
、path
和 http
等内置 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 模块的模拟足以满足大多数用例,但尚未完美。如果您遇到任何问题,请 打开一个问题。