[Bug] 点击"立即更新"后中文转换器全部被删除
Author: tsinglinrainCreated Mar 11, 2026Updated Mar 11, 2026
问题描述
在设置页面的"中文转换器"标签下点击"立即更新"按钮后,用户目录下的所有中文转换器文件(.js)均被物理删除,导致所有中文转换器失效。
复现步骤
- 安装 Jasminum 插件(版本 1.1.29),并已通过之前的更新安装好中文转换器(或者下载安装包解压进去)
- 打开 Zotero 设置 → 茉莉花 → 转换器标签页
- 点击"立即更新"按钮
- 更新完成后,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 行:
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
Source: l0o0/jasminum