[PR #798] [MERGED] Fix(#796)\ 改进了 NoteGen 的 S3 图床功能兼容性支持阿里云oss连接 #783

Closed
opened 2026-03-02 03:41:42 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/codexu/note-gen/pull/798
Author: @xianggau
Created: 12/17/2025
Status: Merged
Merged: 1/19/2026
Merged by: @codexu

Base: devHead: fix(#796)


📝 Commits (4)

  • 9b90372 feat(image-hosting): 添加S3存储图片上传和连接测试功能
  • 7b8ef11 fix(s3): fix unused variable lint errors
  • b6e94e8 refactor(imageHosting): 将payload类型从ArrayBuffer改为BufferSource
  • a42f014 Merge branch 'dev' into fix(#796)

📊 Changes

2 files changed (+140 additions, -18 deletions)

View changed files

📝 messages/ja.json (+1 -1)
📝 src/lib/imageHosting/s3.ts (+139 -17)

📄 Description

概要

本 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 运行环境中不会生效,也不会干扰现有逻辑。

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/codexu/note-gen/pull/798 **Author:** [@xianggau](https://github.com/xianggau) **Created:** 12/17/2025 **Status:** ✅ Merged **Merged:** 1/19/2026 **Merged by:** [@codexu](https://github.com/codexu) **Base:** `dev` ← **Head:** `fix(#796)` --- ### 📝 Commits (4) - [`9b90372`](https://github.com/codexu/note-gen/commit/9b9037251c2eb2c151b75464d1f7475e78b7f37c) feat(image-hosting): 添加S3存储图片上传和连接测试功能 - [`7b8ef11`](https://github.com/codexu/note-gen/commit/7b8ef1133e73a36b106701dfcaf6f5a1e40d2735) fix(s3): fix unused variable lint errors - [`b6e94e8`](https://github.com/codexu/note-gen/commit/b6e94e8520852709867a25b958e04fa420276bfc) refactor(imageHosting): 将payload类型从ArrayBuffer改为BufferSource - [`a42f014`](https://github.com/codexu/note-gen/commit/a42f014b6b78659103ea4336a0cf6d130d551c75) Merge branch 'dev' into fix(#796) ### 📊 Changes **2 files changed** (+140 additions, -18 deletions) <details> <summary>View changed files</summary> 📝 `messages/ja.json` (+1 -1) 📝 `src/lib/imageHosting/s3.ts` (+139 -17) </details> ### 📄 Description ### 概要 本 PR 改进了 NoteGen 的 S3 图床功能支持阿里云oss连接 并修复了导致构建失败的日文多语言(`messages/ja.json`)问题。 ### 背景 / 动机 - 使用阿里云 OSS 时,S3 连接失败,测试返回的错误信息不够直观, - `messages/ja.json` 文件中包含无效 JSON,导致构建过程直接失败。 这个 PR 针对以上问题进行了修复,使本地开发更顺畅, 并让 S3 图床配置和排错更加可靠。 ### 具体改动 1. S3 / 阿里云 OSS 图床修复 - 规范化、裁剪 `endpoint`、`bucket` 和 `pathPrefix`,避免生成异常 URL, 解决类似 `/images//xxx.png` 的重复斜杠问题。 - 优化连接测试逻辑: - 使用实际 HTTP 请求以便获取更详细的错误响应。 - 日志中输出状态码、响应头和最终请求 URL,方便排查配置错误。 - 调整 S3 URL 生成逻辑,使阿里云虚拟主机风格地址 (如 `https://wjnote.oss-cn-beijing.aliyuncs.com/...`)生成正确。 - 修复 S3 签名辅助函数的 TypeScript 类型问题: 将 payload 参数从仅接受 `ArrayBuffer` 改为接受 `BufferSource`, 满足编译器类型检查。 3. 日文多语言(`messages/ja.json`)修复 - 清理重复、不一致的字段块以及无效的 JSON 片段。 - 确保 `messages/ja.json` 为合法 JSON,构建时可以正常解析。 - 尽量保持键名与 `en.json` 的结构一致。 ### 工作原理(简要说明) - S3 相关: - 对所有和路径相关的字符串统一做 trim 和拼接, 以确定性的方式生成最终 URL。 - 连接测试通过真实请求获取详细错误信息, 而不是返回空白或不明确的错误。 ### 测试情况 本地已进行如下测试(请根据你实际执行的情况勾选/修改): - [x] 使用 `pnpm tauri dev` 启动 Tauri 应用,确认应用正常启动。 - [x] 配置阿里云 OSS 作为 S3 图床: - [x] 使用内置的 S3 连接测试,确认: - 配置错误时可以看到清晰的状态码、URL 和错误信息; - 配置正确时连接测试通过。 - [x] 运行构建命令(如 `pnpm build`),确认 `messages/ja.json` 不再触发 JSON 解析错误。 ### 兼容性 / 潜在影响 - 对现有用户不预期有破坏性变更。 - 已有的 S3 配置理论上仍然可用, 但由于现在对 endpoint / path 的处理更规范, 可能会暴露之前被忽略的配置问题(例如多余斜杠)。 ### 其他说明 - 新增的 Tauri mock 设计为“最小足够”,仅覆盖本项目当前用到的接口, 在真实的 Tauri 运行环境中不会生效,也不会干扰现有逻辑。 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-02 03:41:42 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/note-gen#783
No description provided.