Skip to content

官方 Docker 镜像静态资源请求 404:URL 拼接双斜杠 + dicts 缺前导斜杠(v3.0.4) #307

Description

@Jexv

问题描述

官方 Docker 镜像 zyronon/typewords:latest(v3.0.4,2026-08-16 构建)自部署后,词库/文章列表等静态资源请求全部 404:

  • https://files.typewords.cc//list/article.json —— 多一个 /(双斜杠,404)
  • https://files.typewords.cc/dicts/en/word/xxx.json → 去掉尾斜杠后变成 https://files.typewords.ccdicts/... —— 少一个 /(404)

单斜杠 URL 均正常(200)。与部署环境无关,本地与服务器复现一致。

根因

两处 URI 拼接问题:

  1. app/core/config/env.ts(v3.0.4 L22):RESOURCE_URL: 'https://files.typewords.cc/'尾斜杠,与 L53-56 的 ENV.RESOURCE_URL + '/list/word.json'前导斜杠)拼接 → 双斜杠 //list/...
  2. app/core/utils/index.ts _getDictDataByUrl()(v3.0.4 L367/369):ENV.RESOURCE_URL + \dicts/...`**无前导斜杠**,与 list 的拼接风格不一致——若把 RESOURCE_URL 尾斜杠去掉,dicts 又会变成...ccdicts/...`

补充:d18f1d0 已修复 dicts 的前导斜杠,但 v3.0.4 tag 与 Docker Hub 镜像未包含该修复,用户 pull 到的 latest 仍是坏的。

建议

  1. 合入 d18f1d0重新构建并推送 Docker 镜像(自部署用户受影响面最大)
  2. 源码层加防御,防止复发(全项目共 9 处 ENV.RESOURCE_URL + path 拼接:list×4、dicts×2、audio×2、sound×1):
    • RESOURCE_URL 定义处统一 replace(/\/+$/, '') strip 尾斜杠
    • 或统一改用 new URL(path, baseURL) / 抽一个 joinUrl() 工具函数拼接

复现环境

  • 镜像:zyronon/typewords:latest(sha256 对应 v3.0.4,2026-08-16 11:05 UTC 构建)
  • nginx 静态部署,端口任意;浏览器 Network 面板可见上述 URL

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