Skip to content

Conversation

@xianggau
Copy link

@xianggau xianggau commented Dec 17, 2025

概要

本 PR 改进了 NoteGen 的 S3 图床功能支持阿里云oss连接
并修复了导致构建失败的日文多语言(messages/ja.json)问题。

背景 / 动机

  • 使用阿里云 OSS 时,S3 连接失败,测试返回的错误信息不够直观,
  • messages/ja.json 文件中包含无效 JSON,导致构建过程直接失败。

这个 PR 针对以上问题进行了修复,使本地开发更顺畅,
并让 S3 图床配置和排错更加可靠。

具体改动

  1. S3 / 阿里云 OSS 图床修复
  • 规范化、裁剪 endpointbucketpathPrefix,避免生成异常 URL,
    解决类似 /images//xxx.png 的重复斜杠问题。
  • 优化连接测试逻辑:
    • 使用实际 HTTP 请求以便获取更详细的错误响应。
    • 日志中输出状态码、响应头和最终请求 URL,方便排查配置错误。
  • 调整 S3 URL 生成逻辑,使阿里云虚拟主机风格地址
    (如 https://wjnote.oss-cn-beijing.aliyuncs.com/...)生成正确。
  • 修复 S3 签名辅助函数的 TypeScript 类型问题:
    将 payload 参数从仅接受 ArrayBuffer 改为接受 BufferSource
    满足编译器类型检查。
  1. 日文多语言(messages/ja.json)修复
  • 清理重复、不一致的字段块以及无效的 JSON 片段。
  • 确保 messages/ja.json 为合法 JSON,构建时可以正常解析。
  • 尽量保持键名与 en.json 的结构一致。

工作原理(简要说明)

  • S3 相关:
    • 对所有和路径相关的字符串统一做 trim 和拼接,
      以确定性的方式生成最终 URL。
    • 连接测试通过真实请求获取详细错误信息,
      而不是返回空白或不明确的错误。

测试情况

本地已进行如下测试(请根据你实际执行的情况勾选/修改):

  • 使用 pnpm tauri dev 启动 Tauri 应用,确认应用正常启动。
  • 配置阿里云 OSS 作为 S3 图床:
    • 使用内置的 S3 连接测试,确认:
      • 配置错误时可以看到清晰的状态码、URL 和错误信息;
      • 配置正确时连接测试通过。
  • 运行构建命令(如 pnpm build),确认 messages/ja.json
    不再触发 JSON 解析错误。

兼容性 / 潜在影响

  • 对现有用户不预期有破坏性变更。
  • 已有的 S3 配置理论上仍然可用,
    但由于现在对 endpoint / path 的处理更规范,
    可能会暴露之前被忽略的配置问题(例如多余斜杠)。

其他说明

  • 新增的 Tauri mock 设计为“最小足够”,仅覆盖本项目当前用到的接口,
    在真实的 Tauri 运行环境中不会生效,也不会干扰现有逻辑。

cnb added 3 commits December 17, 2025 17:33
实现通过AWS S3签名V4协议上传图片和测试连接的功能,支持阿里云OSS和AWS S3的虚拟托管风格优化,包含错误处理和代理配置
fix: 删除重复的s3 copy.ts文件并清理ja.json中的无用翻译
@xianggau xianggau changed the title Fix(#796)\ improve S3 image hosting and web preview stability Fix(#796)\ 改进了 NoteGen 的 S3 图床功能支持阿里云oss连接 Dec 17, 2025
@xianggau xianggau changed the title Fix(#796)\ 改进了 NoteGen 的 S3 图床功能支持阿里云oss连接 Fix(#796)\ 改进了 NoteGen 的 S3 图床功能兼容性支持阿里云oss连接 Dec 17, 2025
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.

1 participant