跳到主要内容
Deno 2.4 发布,带来 deno bundle、字节/文本导入、OTel 稳定版等更多功能
了解更多

Deno Deploy 上的 Node.js 内置模块

我们很高兴地宣布,从今天起,Deno Deploy 支持导入 Node.js 内置模块,例如 httpfspath。您现在可以在边缘运行现有的 Node.js 应用程序了。

A screenshot of a Deno Deploy playground using the `node:http` built-in module

Deno Deploy 是一个下一代云平台,基于 JavaScript 隔离技术构建。它在边缘,我们全球 35 个区域,贴近您的用户运行 JavaScript、TypeScript 和 WebAssembly。它可以自动扩展,从零到每秒数千个请求。Deno Deploy 内置了从 GitHub 进行的超快速部署,以及一个全球数据库

从今天起,您可以在 Deno Deploy 应用程序中使用 Node.js 内置模块了。诸如 fspathcryptohttp 等模块现在可以即开即用,使您能够轻松地在边缘运行现有的 Node.js 应用程序。

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

这意味着您现在可以在 Deno Deploy 上运行Express 应用程序了

import express from "https://esm.sh/express?target=denonext";
const app = express();
app.get("/", (req, res) => {
  res.send("Hello from Deno Deploy!");
});
app.listen(8080);

查看此实时示例:https://dash.deno.com/playground/express-demo

所有 47 个 Node.js 内置模块的导入都受支持。然而,由于所有在 Deno Deploy 上运行的应用程序都是沙盒化的,因此某些模块(例如 child_process)不提供任何有用功能。有关支持的模块和限制的完整列表,请参阅文档:https://deno.org.cn/deploy/docs/runtime-node

虽然 Node.js 内置模块的行为与其原生 Node.js 对应模块相同,但在某些情况下,我们的实现尚不完美。如果您遇到任何问题,请提交一个问题

这仅仅是 Deno Deploy 在 Node.js 兼容性方面的一个微不足道的开始。在上面的 Express 示例中,esm.sh 用于加载 npm 模块 express。我们正在努力将npm specifiers 支持原生引入 Deno Deploy。请继续关注此方面的更新。