Skip to content

fix: read NUXT_CF_ACCOUNT_ID and NUXT_CF_API_TOKEN from process.env - #315

Open
flingyp wants to merge 1 commit into
miantiao-me:masterfrom
flingyp:fix/read-cf-account-api-token-from-env
Open

fix: read NUXT_CF_ACCOUNT_ID and NUXT_CF_API_TOKEN from process.env#315
flingyp wants to merge 1 commit into
miantiao-me:masterfrom
flingyp:fix/read-cf-account-api-token-from-env

Conversation

@flingyp

@flingyp flingyp commented Jul 15, 2026

Copy link
Copy Markdown

cfAccountId and cfApiToken are hardcoded as empty strings, so Nuxt never picks up the NUXT_CF_ACCOUNT_IDNUXT_CF_API_TOKEN environment variables at build time. This causes all Analytics Engine API endpoints (/api/stats/*, /api/logs/*) to return 404 Server Error — the Worker has no credentials to query the analytics database.

siteToken already reads from process.env. This PR makes the other two variables consistent:

-    cfAccountId: '',
-    cfApiToken: '',
+    cfAccountId: process.env.NUXT_CF_ACCOUNT_ID || '',
+    cfApiToken: process.env.NUXT_CF_API_TOKEN || '',

…ariables

nuxt.config.ts hardcoded cfAccountId and cfApiToken as empty strings,
which prevented the Nuxt build from picking up these values from
environment variables (NUXT_CF_ACCOUNT_ID / NUXT_CF_API_TOKEN).

As a result, all Analytics Engine SQL API calls (/api/stats/*,
/api/logs/*) failed with 404 because the Worker had no credentials
to query Cloudflare Analytics Engine.

Fixed by reading from process.env, consistent with how siteToken
already works.
@miantiao-me

Copy link
Copy Markdown
Owner

你是怎么部署的? 我现在无法复现这个问题

Workers Pages 部署我都没这样的问题

方便发一下你的配置方式吗?

@flingyp

flingyp commented Jul 19, 2026

Copy link
Copy Markdown
Author

我是通过 wrangler deploy CLI 部署的,不是 Cloudflare Pages。

image

配置方式:在 .env 里设置了 NUXT_CF_ACCOUNT_ID 和 NUXT_CF_API_TOKEN,然后 pnpm run build && wrangler deploy

为了定位问题,我做了对照实验:用原始代码(不改任何东西),export NUXT_CF_ACCOUNT_ID=xxx && pnpm run build,然后检查构建产物 .output/server/chunks/nitro/nitro.mjs,发现 cfAccountId 和 cfApiToken 仍然是空字符串。
作为对照,NUXT_DATASET 设为其他值也没被覆盖——说明 Nuxt 3 的 NUXT_* 自动映射不会覆盖 runtimeConfig 里已显式声明的值。

Pages 部署不受影响,因为 Pages 会通过 Worker 的 [vars] bindings 注入环境变量,走的是另一条通道。但 CLI 部署完全依赖构建时 process.env 的读取,所以只有 siteToken(已经用了 process.env.NUXT_SITE_TOKEN)能正常工作,另两个字段一直是空。

@miantiao-me

Copy link
Copy Markdown
Owner

NUXT_* 会覆盖 runtimeConfig 里已显式声明的值, 但是 wrangler deploy CLI 部署我的确没测过。

不过我建议使用 Workers Build CI, 之前你使用 wrangler deploy CLI 应该是需要改本地文件的原因。

现在可以通过构建时环境变量来解决了, 不要改任何代码,建议尝试一下 0.3 版本。

CleanShotX-2026-07-19-8RopufII

注意区分构建时环境变量和运行时环境变量

CleanShotX-2026-07-19-6EzkQWfq

@flingyp

flingyp commented Jul 19, 2026

Copy link
Copy Markdown
Author

好的,我尝试下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants