Skip to content

fix: DOMException 错误信息丢失 —— String(e) 输出 [object DOMException] 而非真实错误消息 (#54) - #62

Merged
Teeeeeeeerry merged 1 commit into
mainfrom
fix/54-domexception-error-message
Aug 8, 2026
Merged

fix: DOMException 错误信息丢失 —— String(e) 输出 [object DOMException] 而非真实错误消息 (#54)#62
Teeeeeeeerry merged 1 commit into
mainfrom
fix/54-domexception-error-message

Conversation

@Teeeeeeeerry

Copy link
Copy Markdown
Owner

修复内容

1. 正确提取 DOMException 的 message(必须)

所有 String(e) 站点改为 e instanceof Error ? e.message : String(e),覆盖 7 处:

文件 位置 说明
entrypoints/content.ts togglePage catch / popup reply ×2 toast 与日志中的错误消息
entrypoints/background.ts sendResponse 错误路径 ×2 翻译代理的错误回传
src/engines/router.ts EngineError 构造 引擎错误的 message 字段

DOMException 继承自 Error.name.message 均已有值,但 String(e) 在特定 console 实现中走 Object.prototype.toString 路径,输出 [object DOMException] 而非真实错误描述。

2. 为 walker 逐元素判定增加防御(推荐)

src/dom/walker.ts 中的 applyCompat / shouldSkipNonVisual / hasNonTextContent 调用包裹在 try-catch 中。GitHub 大量 Web Components(<relative-time><clipboard-copy><include-fragment> 等)上访问 textContent / outerHTML 的 getter 可能抛出,失败时安全跳过当前节点,宁可漏翻单个可疑节点也不要整页崩溃。

3. 为 doTranslate 增加阶段标记(推荐)

  • collect() 阶段异常标记为 [collect]
  • render() 阶段异常标记为 [render idx=N]

即使 .message 不完整也能缩小排查范围。

Closes #54

…消息 (#54)

- 所有 String(e) 站点改为 e instanceof Error ? e.message : String(e)
  覆盖 entrypoints/content.ts、entrypoints/background.ts、src/engines/router.ts
  共 7 处,确保 DOMException 的 name/message 正确展示在 toast 与日志中
- walker.ts 逐元素判定包裹 try-catch,Web Components 上 DOM 属性访问
  抛异常时安全跳过当前节点,宁可漏翻单个可疑节点也不要整页崩溃
- doTranslate 增加阶段标记 [collect]/[render idx=N],缩小错误排查范围
- 版本号 0.6.19 → 0.6.20

Co-Authored-By: zhexuancai-uts <261878103+zhexuancai-uts@users.noreply.github.com>

@Teeeeeeeerry Teeeeeeeerry left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

主要要验证GitHub翻译是否正常

@Teeeeeeeerry
Teeeeeeeerry merged commit 0fac5b4 into main Aug 8, 2026
@Teeeeeeeerry
Teeeeeeeerry deleted the fix/54-domexception-error-message branch August 8, 2026 13:28
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.

fix: DOMException 错误信息丢失 —— String(e) 输出 [object DOMException] 而非真实错误消息

1 participant