Skip to content
我们的赞助商

Cloudflare Worker 实验性

Elysia 现在通过 实验性 的 Cloudflare Worker 适配器支持 Cloudflare Worker。

  1. 您需要 Wrangler 来设置并启动开发服务器。
bash
wrangler init elysia-on-cloudflare
  1. 然后将 Cloudflare 适配器添加到您的 Elysia 应用中,并确保在导出应用之前调用 .compile()
ts
import { Elysia } from 'elysia'
import { CloudflareAdapter } from 'elysia/adapter/cloudflare'

export default new Elysia({
	adapter: CloudflareAdapter 
})
	.get('/', () => 'Hello Cloudflare Worker!')
	// 这是在 Cloudflare Worker 上使 Elysia 工作的必需步骤
	.compile() 
  1. 确保在您的 wrangler 配置中将 compatability_date 设置为至少 2025-06-01
jsonc
{
	"$schema": "node_modules/wrangler/config-schema.json",
 	"name": "elysia-on-cloudflare",
	"main": "src/index.ts",
	"compatibility_date": "2025-06-01"
}
toml
main = "src/index.ts"
name = "elysia-on-cloudflare"
compatibility_date = "2025-06-01"
  1. 现在您可以使用以下命令启动开发服务器:
bash
wrangler dev

这应该会在 http://localhost:8787 启动开发服务器

您不需要 nodejs_compat 标志,因为 Elysia 不使用任何 Node.js 内置模块(或者我们使用的模块尚未支持 Cloudflare Worker)

限制

以下是在 Cloudflare Worker 上使用 Elysia 的已知限制:

  1. Elysia.fileStatic Plugin 不起作用,因为 缺少 fs 模块
  2. OpenAPI Type Gen 不起作用,因为 缺少 fs 模块
  3. 您无法在服务器启动前定义 Response,或者使用会这样做的插件。

静态文件

Static Plugin 不起作用,您仍然可以使用 Cloudflare 的内置静态文件服务 来提供静态文件。

在您的 wrangler 配置中添加以下内容:

jsonc
{
	"$schema": "node_modules/wrangler/config-schema.json",
 	"name": "elysia-on-cloudflare",
	"main": "src/index.ts",
	"compatibility_date": "2025-06-01",
	"assets": { "directory": "public" } 
}
toml
name = "elysia-on-cloudflare"
main = "src/index.ts"
compatibility_date = "2025-06-01"
assets = { directory = "public" } 

public 文件夹中创建并放置您的静态文件。

假设您有如下文件夹结构:


├─ public
│  ├─ kyuukurarin.mp4
│  └─ static
│     └─ mika.webp
├─ src
│  └── index.ts
└─ wrangler.toml

然后您应该能够从以下路径访问您的静态文件:

AoT 编译

以前,要在 Cloudflare Worker 上使用 Elysia,您必须在 Elysia 构造函数中传递 aot: false

现在这不再必要,因为 Cloudflare 现在支持在启动期间进行函数编译

从 Elysia 1.4.7 开始,您现在可以使用 Ahead of Time Compilation 与 Cloudflare Worker 一起使用,并删除 aot: false 标志。

ts
import { Elysia } from 'elysia'
import { CloudflareAdapter } from 'elysia/adapter/cloudflare'

export default new Elysia({
	aot: false, 
	adapter: CloudflareAdapter 
})

否则,如果您不想使用 Ahead of Time Compilation,您仍然可以使用 aot: false,但我们推荐您使用它以获得更好的性能和准确的插件封装。