Deno Deploy 上的 Node.js 内置模块
我们很高兴地宣布,从今天开始,Deno Deploy 支持导入 Node.js 内置模块,例如 http
、fs
和 path
。现在你可以在边缘环境运行现有的 Node.js 应用了。
Deno Deploy 是一个基于 JavaScript 隔离器的下一代云平台。它在边缘环境、遍布全球 35 个区域的服务器上运行你的 JavaScript、TypeScript 和 WebAssembly 代码,更靠近你的用户。它可以自动伸缩,从零到每秒数千个请求。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 对应模块的行为相同,但在某些情况下,我们的实现尚不完善。如果你遇到任何问题,请提交 issue。
这仅仅是我们在 Deno Deploy 中实现 Node.js 兼容性的一个开端。在上面的 express 示例中,esm.sh 被用于加载 npm 模块 express。我们正在努力将 npm specifiers 支持原生带到 Deno Deploy。请继续关注我们即将发布的更新。