跳至主要内容
Deno 2 终于来了 🎉️
了解更多

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 隔离。它在边缘运行您的 JavaScript、TypeScript 和 WebAssembly,在我们全球 35 个区域,靠近您的用户。它可以从零自动扩展到每秒数千个请求。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 指定符 支持原生带到 Deno Deploy。请继续关注此方面的更新。