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

Deno Deploy Beta 2

Deno Deploy 是一个多租户 JavaScript 引擎,运行在 全球 25 个数据中心。该服务将云基础设施与 V8 虚拟机深度集成,允许用户快速编写分布式 HTTPS 服务器脚本。这种新颖的“无服务器”系统从头开始设计,适用于现代 JavaScript 编程。

今天,我们发布了 Deploy Beta 2。这是未来几个月内发布的一系列 beta 版本中的第二个。每个版本都会添加功能并完善编程模型。这些版本的最终成果将是预计将在 2021 年第四季度发布的正式发布公告。

在过去的八个月里,我们一直在悄悄地设计这项托管服务,以补充与 开源 Deno CLI 的工作流程。Deploy 既不运行在 AWS Lambda 上,也不使用 Cloudflare Workers;这是一个具有独特设计的新系统。我们鼓励人们忽略粗糙的初始 UI,探索这个新的 JavaScript 运行时。

Deploy 的目标是成为托管现代服务器端 JavaScript 的最佳场所。

可以使用 Deno.readFile 加载静态文件

Deploy Beta 1 发布以来,许多用户已使用 Deploy 创建了 API 端点和边缘代理。许多其他用例需要静态资产,如图像、Markdown 和 CSS。以前,我们建议用户通过对他们的 GitHub 存储库进行出站 fetch() 请求并将内容通过代理来加载静态内容。

Beta 2 现在通过添加 Deno.readFile API 极大地简化了此过程。此 API 可用于加载存储在部署链接的 GitHub 存储库中的静态文件。

const image = await Deno.readFile("./static/logo.png");
addEventListener("fetch", (e) => {
  e.respondWith(
    new Response(image, {
      headers: { "Content-Type": "image/png" },
    }),
  );
});

您可以在 文档 中详细了解 Deno.readFile API。

由于 Deploy 现在具有文件系统,因此对于所有新项目,import.meta.url 已更新为 file:// URL。现有项目将继续按以前的方式工作。要使用新行为,请创建一个新项目。

Deno.listenDeno.serveHttp

我们正在努力使 Deno Deploy 和 Deno CLI 更紧密地结合在一起,以便一个系统上的代码可以透明地与另一个系统互操作。以前,在 Deploy 中处理传入请求的唯一方法是使用 addEventListener("fetch", cb)。我们现在已添加了使用 CLI 兼容的调用 Deno.listen()Deno.serveHttp() 来处理请求的功能。这使 Oak 等 Web 框架能够透明地支持 Deploy。

const listener = Deno.listen({ port: 0 });
console.log("listening on port", listener.addr.port);

async function handleConn(conn) {
  const httpConn = Deno.serveHttp(conn);
  for await (const e of httpConn) {
    e.respondWith(handler(e.request, conn));
  }
}

function handler(_request, conn) {
  return new Response("ok", {
    headers: {
      "x-localaddr": `${conn.localAddr.hostname}:${conn.localAddr.port}`,
      "x-remoteaddr": `${conn.remoteAddr.hostname}:${conn.remoteAddr.port}`,
    },
  });
}

for await (const conn of listener) {
  handleConn(conn);
}

崩溃报告

2023 年 2 月 7 日更新:此功能在 deploy 中不再可用。

Deploy 已经支持流式日志,可以实时查看来自全球各地的实例输出。但是,当 Deno Deploy 实例崩溃时,可能很难在日志中发现它,尤其是对于流量很大的项目。因此,我们添加了持久性“崩溃报告”,其中包含任何未处理异常之前的 100 行日志。

新设计

Deploy 仪表板网站 已进行了完整的视觉重新设计,具有更好的导航和可访问性。

接下来

我们将在即将发布的 beta 版本中继续改进 Deploy,最终将在 2021 年第四季度发布正式版本。预计下一个版本将解决长期要求的缓存功能、CLI 互操作性和更好的入门流程。