Skip to content

[Bug] v26.09.11.16.00 所有图片/视频接口返回 500 "Cannot access 'R' before initialization" #177

Description

@slyannayls

问题概述

在已发布的镜像 rfym21/qwen2api:v26.09.11.16.00latest 指向同一版本)中,所有图片/视频相关的代码路径都立即失败,返回 HTTP 500 和一个 JavaScript TDZ 错误。同一个容器里,文字对话、思考、搜索功能全部正常。

环境信息

  • 镜像:rfym21/qwen2api:v26.09.11.16.00 / :latest
  • Digest:sha256:9a1c6bfb6a7fe1c26f6785d436e542b6213795a4927f876f447bddae8722dda9(linux/amd64)
  • docker exec qwen2api qwen2api --version26.09.11.16.00
  • 宿主机:Ubuntu 22.04.5,Docker 29.7.2
  • 启动命令:
docker run -d --name qwen2api \
  -p 8766:3000 \
  --env-file .env \
  -v ./data:/app/data \
  -v ./logs:/app/logs \
  -v ./caches:/app/caches \
  --restart unless-stopped \
  rfym21/qwen2api:latest
  • 配置:DATA_SAVE_MODE=fileCACHE_MODE=file,已设置 API_KEYPROXY_URL 未设置
  • 启动日志显示 5 个账户加载成功

复现步骤

curl -X POST http://127.0.0.1:8766/v1/images/generations \
  -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3.7-plus-image","prompt":"一只戴墨镜的橘猫","n":1}'

实际结果

http=500  耗时=0.161646s
{"error":{"message":"Cannot access 'R' before initialization.","type":"server_error"}}

所有图片/视频路径都是同样的 500:

接口 模型 结果
POST /v1/images/generations qwen3.7-plus-image 500
POST /v1/images/generations qwen3.8-omni-flash-image 500
POST /v1/chat/completionsmodalities: ["image","text"] qwen3.7-plus-image 500
POST /v1/videos qwen3.7-plus-video 500

容器日志:

[ERROR] [CHAT] ❌ 图片/视频主流程异常
[ERROR] [CHAT] ❌ OpenAI 图片生成端点处理失败
{
  message: "Cannot access 'R' before initialization.",
  code: undefined,
  status: undefined,
  statusText: undefined,
  headers: undefined,
  data: null,
}

期望结果

返回 HTTP 200 和图片 URL,与上一个版本一致。

对照测试 —— 排除网络 / 上游 / 账号因素

同一台宿主机、同一个 API key、同一个账号池、完全相同的请求体,把上一个版本 v2026.08.20.18.50 同时跑在 8767 端口做对照:

# v26.09.11.16.00 @ :8766
http=500  耗时=0.161646s
{"error":{"message":"Cannot access 'R' before initialization.","type":"server_error"}}

# v2026.08.20.18.50 @ :8767
http=200  耗时=1.172653s
{"created":1789720432,"data":[{"url":"https://img.alicdn.com/imgextra/i1/O1CN01L12MaQ1ZwfYKk7Yrc_!!6000000003259-2-tps-900-594.png"}]}

qwen3.7-plus-image 在两个版本的模型列表里都存在,模型名有效。

同一个新容器上的文字请求也成功,说明出网、鉴权和账号池都没有问题:

  • qwen3.8-max → 200
  • qwen3.8-max-thinking-search → 200,带回引用

分析

Cannot access 'R' before initialization 是一个由暂时性死区(temporal dead zone)抛出的 ReferenceError —— 某个标识符在它所在的声明/模块被求值之前就被读取了。

两个细节说明问题出在本地求值顺序,而不是外部因素:

  1. 错误对象里 headers: undefineddata: null,即完全没有 HTTP 响应 —— 失败发生在上游请求发出之前
  2. 失败耗时 0.16 秒,对任何网络往返来说都太快了(正常路径要 1.2 秒左右)。

同一个二进制里的文字路径正常,说明问题只出现在图片/视频的模块依赖图上。可能的原因是循环引用,其求值顺序在 bun build 打包/压缩之后发生了变化(压缩器把标识符重命名成了 R,所以报错信息里的名字是看不出含义的)。

建议排查方向

  • 用同一份提交从源码运行(bun src/server.jsnode src/server.js)后重试图片请求。如果源码下正常,就能确认是 tools/build-binary.mjs 的打包环节问题,而不是图片模块本身。
  • 检查图片/视频模块里是否存在某个顶层 const/let,被另一个模块在自身求值期间读取(典型情况是共享的 config 或 client 对象被双向 import)。

影响范围

v26.09.11.16.00 中,图片生成、图片编辑、视频生成、Omni 图片输出全部不可用。需要这些功能的用户只能停留在 v2026.08.20.18.50

Activity

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions