在 Cloudflare 上部署 Open Kounter

没写完,先发个草稿,等有空了再完善一下。

前言

更新博客时关注到了Open Kounter 这个项目。这玩意儿可以通过 Serverless 的方式部署在 EdgeOne 上,提供一个 API 接口来统计访问量。

兴致勃勃地点进部署页面,结果发觉是腾讯云换皮?!还要我实名认证,呃呃呃……

我太懒了。不过仔细想想,既然是 Serverless 的东西,而且我这博客是部署在 Cloudflare Pages 上面,Cloudflare 也有 Functions 和 KV 存储这种东西,所以应该也能部署在 Cloudflare 上吧?于是就有了这篇文章。

部署方法

这俩虽然有些过于相似,不过直接干上去101.0000%会部署失败,然后你就只能看见个主页,然后一点就报错。

二者的主要差异在于:

  • Pages Functions: 文件夹位于/edge-functions,而不是/functions
  • Workers KV: Cloudflare 把变量放在env对象里,而 EdgeOne 直接放在全局作用域。

这就导致了部署方法的不同。对于 Cloudflare,在部署之前我们需要先把edge-functions文件夹重命名为functions,然后想办法把OPEN_KOUNTER重定向到env.OPEN_KOUNTER

直接替换的形式肯定是行不通的,因为文件中这个变量拉得到处都是。可以考虑在函数体的开头用globalThis

1
globalThis.OPEN_KOUNTER = env.OPEN_KOUNTER;

这样就能把OPEN_KOUNTER暴露在全局作用域了,简单省事。

考虑到每个文件中函数开头完全一致,我们可以找个特征,用replace-in-file这个工具来批量替换:

1
npx replace-in-file 'context;' 'context; globalThis.OPEN_KOUNTER = env.OPEN_KOUNTER;' 'functions/**/*.js'

最后的部署命令如下:

1
mv edge-functions functions && npx replace-in-file 'context;' 'context; globalThis.OPEN_KOUNTER = env.OPEN_KOUNTER;' 'functions/**/*.js' && npm run build

其它的步骤和 EdgeOne 一样。Enjoy!


在 Cloudflare 上部署 Open Kounter
https://blog.fqilin.top/open-kounter-4-cloudflare/
作者
F_Qilin
发布于
2026年3月25日
许可协议