Skip to content

[BUG] edgeone部署打开首页提示获取设置失败: Undefined #95

Description

@MoForgt

请确认以下事项

  • 我确认描述清晰有礼貌,已提供必要诊断信息,在最新版本上可以复现。
  • 我确认已经查过相关文档和已有问题和讨论,本次反馈并非是重复提问。
  • 我确认这是Worker项目问题,并非网络和操作导致,也不是Go版的问题。
  • 我确认已阅读开源许可/免责条款/使用政策,理解使用的风险自行承担。

版本(必填)

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

Activity

  1. MoeFurina commented on Oct 1, 2026

    @MoeFurina

    同样遇到了这个问题

  2. dustink66 commented on Oct 2, 2026

    @dustink66

    同样遇到这个问题,阿里云esa也是manifest.json提示401状态码,目前就只有cf部署成功。

  3. tianfeiyuzi commented on Oct 2, 2026

    @tianfeiyuzi

    一样的问题,主要是没发现有生成blob库,没fork最新分支前可以部署成功,但是跳过了配置过程直接到登录,但是没有密码

  4. Alumos commented on Oct 3, 2026

    @Alumos

    同样遇到了这个问题

    已经让 GPT 修了一下,
    改动内容:

    • 保留 cloud-functions/api/[[default]].js,让 EdgeOne 构建前能发现 /api/* 云函数。
    • 将实际云函数 bundle 生成到 dist-server/edgeone-entry.js。
    • 更新 .gitignore,确保入口文件可以提交,构建产物仍被忽略。
    • 更新 middleware.js 中过时的入口说明。

    等官方更新吧

  5. ycbhk commented on Oct 4, 2026

    @ycbhk

    补充实测数据:该方案已在 EdgeOne 生产环境验证有效

    我按 @Alumos 在本帖提供的方案修复后,已成功部署并验证通过。因为 @Alumos 提到「等官方更新」,这里补充一组可复现的对照数据,供维护者与后续遇到同样问题的人参考。

    环境

    • EdgeOne Makers(中国站),自定义域名已绑定
    • 基线:bfb963ee(build(edgeone): generate cloud-functions artifact at deploy time #93,即引入本问题的那次改动)
    • Node 版本 / 构建命令:完全使用仓库预置的 edgeone.json,未改动任何构建参数
    • 未预先创建任何 KV 命名空间或 Blob 存储(KV 存储 列表始终为空)

    故障现象与定位

    构建与部署在控制台均显示「成功」,但首页报「获取设置失败:Undefined」。

    关键分流方法——对比同一域名下三类路径的响应:

    路径 响应 说明
    /kv-list 401 + application/json({"error":"no credentials"}) 4 个 KV 边缘函数已部署,后端代码活着
    /api/healthz 200 + text/html /api/* 被 SPA 兜底吃掉
    /manifest.json 200 + 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 有帮助。

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions