news 2026/9/10 5:39:41

Next AI Draw.io 如何部署到 Cloudflare Workers 并注册 workers.dev 子域名

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Next AI Draw.io 如何部署到 Cloudflare Workers 并注册 workers.dev 子域名

Next AI Draw.io 如何部署到 Cloudflare Workers 并注册 workers.dev 子域名

【免费下载链接】next-ai-draw-ioA next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-io

把 Next AI Draw.io 发布到 Cloudflare Workers 上,最终得到的是一个可通过https://<worker-name>.<你的子域名>.workers.dev访问的在线应用。整个流程依赖 OpenNext 适配器(@opennextjs/cloudflare)把 Next.js 应用转换成 Worker,再用 Wrangler 发布。开始前需要满足以下条件:

  • 一个 Cloudflare 账户(免费版即可完成基本部署;只有启用 R2 做 ISR 缓存才需要绑定支付方式);
  • Node.js 18+;
  • Wrangler CLI(项目已将wrangler列入 devDependencies,执行npm install后即可使用);
  • 构建环境为 Linux 或 macOS。原生 Windows 上 OpenNext 和 Wrangler 不完全可靠(WASM 文件路径问题可能导致构建失败),文档建议使用 GitHub Codespaces 或 WSL (Linux)。

完整的官方说明见 docs/en/cloudflare-deploy.md(中文版本见 docs/cn/cloudflare-deploy.md)。

登录 Cloudflare 并安装依赖

在仓库根目录安装依赖,Wrangler CLI 会作为开发依赖一并安装:

npm install

然后用 Wrangler 登录 Cloudflare 账户:

npx wrangler login

登录成功后才能在后续步骤中上传静态资源并发布 Worker。

配置环境变量

Cloudflare 的本地测试与部署使用.dev.vars作为环境变量文件,而常规 Next.js 开发使用.env.local。按文档要求两个文件都要创建:

# 用于 Cloudflare 本地调试 + 部署 cp env.example .dev.vars # 用于常规 Next.js 开发 cp env.example .env.local

两个文件填入相同的值。env.example 中包含 AI Provider 配置项,例如AI_PROVIDER(默认bedrock)、AI_MODEL(必填,可逗号分隔多个模型 ID,第一个为默认模型),以及各供应商的 API Key 等可选配置。应用能调用 AI 生成图表的前提是在这里填好对应的模型与密钥。

选择部署类型:不带 R2 或带 R2

这一步决定两个配置文件的内容:open-next.config.ts 和 wrangler.jsonc。

主路径:不带 R2(免费、配置最简单)

如果不需要 ISR 缓存,open-next.config.ts使用空配置即可:

import { defineCloudflareConfig } from "@opennextjs/cloudflare/config" export default defineCloudflareConfig({})

wrangler.jsonc中去掉r2_buckets字段:

{ "$schema": "node_modules/wrangler/config-schema.json", "main": ".open-next/worker.js", "name": "next-ai-draw-io-worker", "compatibility_date": "2025-12-08", "compatibility_flags": ["nodejs_compat", "global_fetch_strictly_public"], "assets": { "directory": ".open-next/assets", "binding": "ASSETS" }, "services": [ { "binding": "WORKER_SELF_REFERENCE", "service": "next-ai-draw-io-worker" } ] }

注意compatibility_date必须是当天或过去的日期,仓库中的 wrangler.jsonc 里也有一条注释强调这一点。

可选分支:带 R2(完整 ISR 支持)

R2 开启 Next.js 的增量静态再生(ISR)缓存,需要在 Cloudflare 账户中绑定支付方式。

  1. 在 Cloudflare 控制台创建 R2 存储桶:进入Storage & Databases → R2,点击Create bucket,命名为next-inc-cache
  2. open-next.config.ts启用 R2 增量缓存:
import { defineCloudflareConfig } from "@opennextjs/cloudflare/config" import r2IncrementalCache from "@opennextjs/cloudflare/overrides/incremental-cache/r2-incremental-cache" export default defineCloudflareConfig({ incrementalCache: r2IncrementalCache, })
  1. wrangler.jsonc中加入r2_buckets段:
"r2_buckets": [ { "binding": "NEXT_INC_CACHE_R2_BUCKET", "bucket_name": "next-inc-cache" } ]

bucket_name必须与控制台中创建的桶名完全一致。

需要说明的是:当前仓库中这两个文件正处于带 R2 的配置状态(wrangler.jsonc 含r2_buckets,open-next.config.ts 启用了r2IncrementalCache)。如果你的账户没有启用 R2,要么按上文切换到不带 R2 的配置,要么先启用 R2,否则部署时会报 R2 相关错误(见后文排查章节)。

两种方案的差异如下(摘自部署文档):

功能不使用 R2使用 R2
成本免费需要绑定支付方式
ISR 缓存
静态页面支持支持
API 路由支持支持
配置复杂度简单中等

文档的建议是:测试或简单应用选不带 R2;需要 ISR 缓存的生产应用选带 R2。

注册 workers.dev 子域名(仅首次部署需要)

首次部署前,账户下必须有一个 workers.dev 子域名,有两种注册方式:

方式一:通过 Cloudflare 控制台(推荐)

登录 Cloudflare 控制台,进入Workers & Pages → Overview → Set up a subdomain,按提示完成注册。

方式二:在部署过程中注册

运行npm run deploy时,Wrangler 可能会提示:

Would you like to register a workers.dev subdomain? (Y/n)

输入Y并选择子域名名称即可。

注意:在 CI/CD 或非交互式环境中这个提示不会出现,这类环境应提前通过控制台注册子域名。

执行部署并验证结果

如果想在部署前先在本地预览 Worker(可选):

npm run preview

该脚本执行opennextjs-cloudflare build && opennextjs-cloudflare preview。确认无误后执行正式部署:

npm run deploy

package.json 中该脚本对应opennextjs-cloudflare build && opennextjs-cloudflare deploy,一次完成四件事:构建 Next.js 应用、通过 OpenNext 转换成 Cloudflare Worker、上传静态资源、发布 Worker。

部署完成后,应用可通过以下地址访问:

https://<worker-name>.<your-subdomain>.workers.dev

使用默认配置时 worker 名为next-ai-draw-io-worker,即https://next-ai-draw-io-worker.<your-subdomain>.workers.dev。浏览器打开该地址能看到应用页面,即表示发布成功;打不开时对照下面的报错表逐项检查。

常见报错与修复

部署文档列出了以下几种报错现象及对应处理:

  • You need to register a workers.dev subdomain:账户下没有注册 workers.dev 子域名。到控制台的Workers & Pages → Set up a subdomain注册后重新部署。
  • Please enable R2 through the Cloudflare Dashboardwrangler.jsonc里配置了 R2,但账户尚未启用该功能。要么在控制台启用 R2(需要支付方式),要么改用不带 R2 的配置。
  • No R2 binding "NEXT_INC_CACHE_R2_BUCKET" foundwrangler.jsonc缺少r2_buckets配置。补上r2_buckets段,或改用不带 R2 的配置。
  • Can't set compatibility date in the futurecompatibility_date被设成了未来日期。改成当天或更早的日期。
  • Windows 报错resvg.wasm?module(ENOENT):Windows 文件名不能包含?,而某个 wasm 资源文件名中带有?module。在 Linux 环境(WSL、Codespaces 或 CI)上执行构建与部署。

部署完成后的地址和限制就到此为止:不带 R2 的部署是免费的,但没有 ISR 缓存;带 R2 的部署有 ISR 缓存,前提是账户已启用 R2 且桶名与bucket_name完全一致。

【免费下载链接】next-ai-draw-ioA next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 5:39:16

从零搭建智能学习平台:SpringBoot+Vue全栈开发实战与踩坑总结

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 5:37:28

智能体系统架构:隔离、集成与治理的范式重构

1. 为什么“智能体系统”不能照搬微服务那一套&#xff1f;“智能体系统架构&#xff1a;隔离、集成与治理的综合调研”——这个标题乍看像一篇学术综述&#xff0c;但如果你真在一线做过大模型应用落地&#xff0c;就会发现它戳中了当前最棘手的工程现实&#xff1a;我们正用微…

作者头像 李华
网站建设 2026/9/10 5:36:06

AI Agent九维度评估与Prompt发布门禁实战体系

1. 项目概述&#xff1a;为什么“好用”比“能用”更难定义&#xff1f; AI Agent不是写完代码跑起来就完事的玩具&#xff0c;它是个活的系统——会听错、会想歪、会绕远路、会在关键时刻卡壳。我带过三支团队落地Agent项目&#xff0c;从客服对话引擎到内部知识助手&#xff…

作者头像 李华
网站建设 2026/9/10 5:34:54

Agent评估体系:九维度评分与Prompt发布门禁实战指南

如果只靠肉眼观察几个 Demo 就觉得 Agent “能用”&#xff0c;那大概率一上线就会被真实用户教做人。我做过不少 Agent 项目&#xff0c;从最初的新奇劲儿过去之后&#xff0c;很快就意识到一个扎心的事实&#xff1a;没有量化评估体系的 Agent 优化&#xff0c;本质上是靠玄学…

作者头像 李华