Cloudflare
操作指南
自定义 Worker

自定义 Worker

Cloudflare 适配器生成的 worker 仅导出 一个 fetch 处理程序 (opens in a new tab)

有时您的应用程序需要暴露另一种类型的处理程序(即 一个计划任务处理程序 (opens in a new tab))或导出一个 Durable Object (opens in a new tab)。这可以通过创建自定义 worker 来实现。

自定义 worker 会复用生成的 fetch 处理程序。

创建您的自定义 Worker

以下自定义 worker 复用了生成的 fetch 处理程序并添加了一个计划任务处理程序:

// custom-worker.ts
 
// @ts-ignore `.open-next/worker.ts` 在构建时生成
import { default as handler } from "./.open-next/worker.js";
 
export default {
  fetch: handler.fetch,
 
  async scheduled(event) {
    // ...
  },
} satisfies ExportedHandler<CloudflareEnv>;
 
// 仅当您的应用使用 DO Queue 和 DO Tag Cache 时才需要重新导出
// 详见 https://opennext.js.org/cloudflare/caching
// @ts-ignore `.open-next/worker.ts` 在构建时生成
export { DOQueueHandler, DOShardedTagCache } from "./.open-next/worker.js";

参见 适配器仓库中的示例 (opens in a new tab)

更新 wrangler 配置中的入口点

// wrangler.jsonc
{
-  "main": "./.open-next/worker.js"
+  "main": "./path/to/custom-worker.ts",
}