绑定
绑定 (opens in a new tab) 允许您的 Worker 与 Cloudflare 开发者平台上的资源进行交互。当您在 Worker 上声明绑定时,您授予它特定的能力,例如能够读取和写入文件到 R2 (opens in a new tab) 存储桶。
如何配置您的 Next.js 应用以便访问绑定
安装 @opennextjs/cloudflare (opens in a new tab),然后在您的 Next.js 应用的根目录中添加一个 wrangler 配置文件 (opens in a new tab),如 入门指南 中所述。
如何在您的 Next.js 应用中访问绑定
您可以通过 getCloudflareContext 从 Next.js 应用的任何路由访问 绑定 (opens in a new tab):
import { getCloudflareContext } from "@opennextjs/cloudflare";
export async function GET(request) {
let responseText = "Hello World";
const myKv = getCloudflareContext().env.MY_KV_NAMESPACE;
await myKv.put("foo", "bar");
const foo = await myKv.get("foo");
return new Response(foo);
}getCloudflareContext 仅可在“异步模式”下的 SSG 路由中使用(使其返回一个 promise),要以这种方式运行函数,只需提供一个选项参数并将 async 设置为 true:
const context = await getCloudflareContext({ async: true });警告:在 SSG 期间建议谨慎操作,因为秘密(存储在 .dev.vars 文件中)和来自绑定的本地开发值(如保存在本地 KV 中的值)将用于页面的静态生成。
如何向您的 Worker 添加绑定
通过将绑定添加到您的 wrangler 配置文件 (opens in a new tab) 来向您的 Worker 添加绑定。
绑定的 TypeScript 类型声明
为了确保上述 getCloudflareContext().env 中的 env 对象具有准确的 TypeScript 类型,请运行以下 Wrangler 命令以 生成与您的 Worker 配置匹配的类型 (opens in a new tab):
npx wrangler types --experimental-include-runtime这将生成一个 d.ts 文件并(默认情况下)将其保存到 .wrangler/types/runtime.d.ts。系统将在命令输出中提示您将该文件添加到 tsconfig.json 的 compilerOptions.types 数组中。
如果您希望将该文件提交到 git,您可以提供一个自定义路径。例如,此处 runtime.d.ts 文件将保存到项目的根目录:
npx wrangler types --experimental-include-runtime="./runtime.d.ts"为了确保您的类型始终保持最新,请在配置文件发生任何更改后运行 wrangler types --experimental-include-runtime。
其他 Cloudflare API(cf, ctx)
您可以从 cf 对象 (opens in a new tab) 访问有关传入请求的上下文,以及从 getCloudflareContext() (opens in a new tab) 的返回值中的 ctx 对象 (opens in a new tab) 访问生命周期方法:
import { getCloudflareContext } from "@opennextjs/cloudflare";
export async function GET(request) {
const { env, cf, ctx } = getCloudflareContext();
// ...
}