Repository navigation
[BUG] edgeone部署打开首页提示获取设置失败: Undefined #95
Description
Activity
同样遇到了这个问题
同样遇到这个问题,阿里云esa也是manifest.json提示401状态码,目前就只有cf部署成功。
一样的问题,主要是没发现有生成blob库,没fork最新分支前可以部署成功,但是跳过了配置过程直接到登录,但是没有密码
同样遇到了这个问题
已经让 GPT 修了一下,
改动内容:- 保留 cloud-functions/api/[[default]].js,让 EdgeOne 构建前能发现 /api/* 云函数。
- 将实际云函数 bundle 生成到 dist-server/edgeone-entry.js。
- 更新 .gitignore,确保入口文件可以提交,构建产物仍被忽略。
- 更新 middleware.js 中过时的入口说明。
等官方更新吧
补充实测数据:该方案已在 EdgeOne 生产环境验证有效
我按 @Alumos 在本帖提供的方案修复后,已成功部署并验证通过。因为 @Alumos 提到「等官方更新」,这里补充一组可复现的对照数据,供维护者与后续遇到同样问题的人参考。
环境
- EdgeOne Makers(中国站),自定义域名已绑定
- 基线:
bfb963ee(build(edgeone): generate cloud-functions artifact at deploy time #93,即引入本问题的那次改动) - Node 版本 / 构建命令:完全使用仓库预置的
edgeone.json,未改动任何构建参数 - 未预先创建任何 KV 命名空间或 Blob 存储(
KV 存储列表始终为空)
故障现象与定位
构建与部署在控制台均显示「成功」,但首页报「获取设置失败:Undefined」。
关键分流方法——对比同一域名下三类路径的响应:
路径 响应 说明 /kv-list401+application/json({"error":"no credentials"})4 个 KV 边缘函数已部署,后端代码活着 /api/healthz200+text/html/api/*被 SPA 兜底吃掉/manifest.json200+text/html连真实静态文件也被兜底 /kv-list能返回 JSON、而/api/*不能,这组对比基本可以确认:Node 云函数从未被注册,只有边缘函数上线了。官方文档提到的/api/healthz与/api/public/env_check两个诊断接口在此时都返回 HTML,无法用来读 JSON 诊断信息。修复内容
按本帖 @Alumos 的方案,提交 8 个文件(与 PR #101 一致,入口文件内容逐字节相同):
- 新增
cloud-functions/[[default]].js,显式export function onRequest(context),import../dist-server/edgeone-entry.js scripts/build-edge.mjs的outfile改为dist-server/edgeone-entry.js.gitignore/.prettierignore放行cloud-functions/- 同步
middleware.js注释、更新build-verify.yml、新增tests/edgeone-entry.test.mjs - 顺带清掉
db_cipher.test.ts中重复的type DbCipher导入(该基线上重复了两次,会导致pnpm run lint失败)
修复后实测
// GET /api/healthz → 200 application/json { "ok": true, "name": "OpenList", "version": "v4.2.3", "checks": { "config": { "ok": true, "storages": 0, "users": 2 }, "persistence": { "configured": true, "connected": true, "platform": "EdgeOne Blob (@edgeone/pages-blob, strong consistency)", "error": null } } }
// GET /api/public/env_check → data.ready: true { "runtime": { "serverless": true, "platform": "EdgeOne Blob (SDK)" }, "config": { "db_driver": "auto", "resolved_driver": "blob", "db_format": "map", "resolved_format": "map" }, "storage": { "available": true, "memory": false }, "ready": true }
/api/public/settings也已恢复返回正常 JSON,前端「获取设置失败」消失。initialized: false,等待跑首次安装向导。两点给后续遇到此问题的人
1. 「EdgeOne 存储 → KV 存储」列表为空是正常状态,不是故障。
我一开始就怀疑这里。实际上 EdgeOne 走的是
src/backend/internal/model/store/driver/blob.ts,通过@edgeone/pages-blob的getStore()取得存储,不需要手动创建命名空间或绑定。那个空的 KV 列表是干扰项,不用管。2. 调整
edgeone.json的rewrites无法修复本问题。我曾判断
"source": "/*"把/api/*兜底吃掉了,于是改成排除 API 的正则,结果误伤了manifest.json与/assets/*,全部 404(EdgeOne 的source似乎不支持 lookahead 断言)。已回滚为/*。middleware.js本身已通过isBackend正则排除/api/*,此处无需重复排除。真正的原因只在函数发现时机上。一个小观察
/api/healthz返回的environment字段是development,而/api/public/env_check里runtime.platform是EdgeOne Blob (SDK)、persistence.platform却显示EdgeOne Blob (@edgeone/pages-blob, strong consistency)。两者措辞不一致,疑似正常现象(可能是 SDK 与 store 两层视角),供参考。补充信息
- 唯一剩余的提示是
JWT_SECRET_MISSING(level: warning,非 error)。不设置也能正常工作——初始化时会随机生成并持久化到 Blob;但官方文档建议显式设置,避免多节点冷启动时各持不同密钥导致登录态失效。 - 域名绑定与 CNAME 验证本身无任何问题,与本问题无关。
希望这些数据对定位和后续合并 PR #101 有帮助。
请确认以下事项
版本(必填)
2天前更新的版本
平台(必填)
Tencent EdgeOne Makers
DB_FORMAT(必填)
map(整对象 JSON)
DB_DRIVER(必填)
auto
存储驱动(必填)
还没到这里
问题描述(必填)
github仓库说明有个一键部署,我就点击了一键部署然后设置了JWT_SECRET环境变量,最后预览显示获取设置失败: Undefined
报错信息(必填)
首页直接显示:获取设置失败: Undefined
控制台报错:manifest.json:1 Failed to load resource: the server responded with a status of 401 (Authorization Required)
openlist-tsworker-qylsisry.edgeone.cool/:1 Manifest fetch from https://openlist-tsworker-qylsisry.edgeone.cool/manifest.json failed, code 401
openlist-tsworker-qylsisry.edgeone.cool/:1 is deprecated. Please include
content.js:1 Content Script 未知消息类型: COMPUTE_PAGE_FINGERPRINT
handleMessage @ content.js:1
content.js:6267 [customMenuRawItems] Array(1)
content.js:7402 adjustPosIfNecessary Object 400 1920
content.js:7402 adjustPosIfNecessary Object 400 1920
content.js:7402 adjustPosIfNecessary Object 400 1920
manifest.json:1 Failed to load resource: the server responded with a status of 401 (Authorization Required)
网络标签的:https://openlist-tsworker-qylsisry.edgeone.cool/manifest.json提示401状态码,其他均为200
相关配置(必填)
DB_FORMAT:map
DB_DRIVER:auto
复现链接(可选)
No response