前言
官方教程中使用了@opennextjs/cloudflare中的getCloudflareContext方法来引入环境变量,但在根据官方教程实际操作时,会发现这样引入的环境变量没有类型声明,这样在编写代码时看着会有报错心里梗得慌,所以本教材在参考官方教程的基础上,完善引入的环境变量的类型说明
教程如下
参照官方给出的教程,如何在nextjs中绑定env
首先在wrangler中配置好想要的绑定之后
运行以下wrangler指令
npx wrangler types --experimental-include-runtime
此指令会在根目录下生成一个worker-configuration.d.ts
点击进入该文件会发现生成了类似如下绑定
interface Env {
NEXTJS_ENV: string;
DB: D1Database;
ASSETS: Fetcher;
}
将以上绑定修改为
interface CloudflareEnv {
NEXTJS_ENV: string;
DB: D1Database;
ASSETS: Fetcher;
}
以上操作把接口名从Env改成CloudflareEnv
然后在tsconfig.json文件中,引入以上接口定义
"types": [
"./worker-configuration.d.ts"
]
最后在代码中引入
import { getCloudflareContext } from "@opennextjs/cloudflare";
const cfenv=getCloudflareContext().env //避免使用env这个变量名,会和环境变量的env产生冲突
这样就可以通过cfenv来访问到绑定的各种worker功能了
总结
直接引入env这个接口定义,仍然无法在访问cloudflare的环境变量时得到精确的类型声明,在审查代码后发现定义cloudflare环境变量的变量名为CloudflareEnv,故可以将定义好的接口命名为CloudflareEnv再导入解决问题
Comments NOTHING