Deno Deploy 上的 Node.js 内置模块
我们很高兴地宣布,从今天开始,Deno Deploy 支持导入 Node.js 内置模块,例如 http
、fs
和 path
。现在您可以在边缘运行现有的 Node.js 应用。
Deno Deploy 是一个 下一代云平台,基于 JavaScript 隔离。它在边缘运行您的 JavaScript、TypeScript 和 WebAssembly,在我们全球 35 个区域,靠近您的用户。它可以从零自动扩展到每秒数千个请求。Deno Deploy 内置了来自 GitHub 的超快部署,以及 一个全球数据库。
从今天开始,您可以在 Deno Deploy 应用程序中使用 Node.js 内置模块。例如 fs
、path
、crypto
或 http
等模块现在开箱即用,使您能够在边缘运行现有的 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。请继续关注此方面的更新。