#505·jasminum

[Bug] 点击"立即更新"后中文转换器全部被删除

Author: tsinglinrainCreated Mar 11, 2026Updated Mar 11, 2026

问题描述

在设置页面的"中文转换器"标签下点击"立即更新"按钮后,用户目录下的所有中文转换器文件(.js)均被物理删除,导致所有中文转换器失效。

复现步骤

  1. 安装 Jasminum 插件(版本 1.1.29),并已通过之前的更新安装好中文转换器(或者下载安装包解压进去)
  2. 打开 Zotero 设置 → 茉莉花 → 转换器标签页
  3. 点击"立即更新"按钮
  4. 更新完成后,Zotero 中所有中文转换器消失

环境信息

  • Zotero 版本:8.0.4 (x64)
  • 操作系统:Windows 11 Build 28020
  • Jasminum 版本:1.1.29
  • 转换器存储路径:D:\Program Files (x86)\Zotero\personalstorage\translators\

可能的原因分析

触发路径

点击"立即更新"后,代码调用 updateTranslators(true)_updateTranslators(force=true)mendTranslators()

mendTranslators() 中,满足条件后调用了 Zotero.Schema.resetTranslators(),该函数会物理删除用户转换器目录中的文件。

问题代码

位于 src/modules/translators.ts 第 96–110 行:

typescript
async function mendTranslators() {
  const translators = Zotero.Translators.getAll(); // 未使用 await
  if (
    !getPref("firstRun") &&
    !getPref("translatorsMended") &&
    Object.keys(translators).length < 727 // 硬编码的旧版本阈值
  ) {
    await Zotero.Schema.resetTranslators(); // 物理删除转换器文件!
    setPref("translatorsMended", true);
  }
}

其他

因为自己急用,所以下载源码,用Claude改了一下,编译好安装后能用,我就顺手提了pr。 本人对js语言不精,代码AI写的没有经过review,并且后面rebase导致出问题,提交pr过于草率,所以给那个pr终止了。给维护者造成麻烦,深表歉意。

在这里提交了issue,想问问其他人是否遇到类似情况,探讨一下问题出现的原因。

附件: Debug Output.htm