diff --git a/src/pages/common/Achievements.vue b/src/pages/common/Achievements.vue index 4d4ce9b8..85401d31 100644 --- a/src/pages/common/Achievements.vue +++ b/src/pages/common/Achievements.vue @@ -348,14 +348,8 @@ async function importJson(): Promise { await TGLogger.Info("[Achievements][importJson] 已取消文件选择"); return; } - if (!(await verifyUiafData(selectedFile))) { - showSnackbar({ - color: "error", - text: "读取 UIAF 数据失败,请检查文件是否符合规范", - }); - await TGLogger.Error("[Achievements][importJson] 读取 UIAF 数据失败,请检查文件是否符合规范"); - return; - } + const check = await verifyUiafData(selectedFile); + if (!check) return; const remoteRaw = await readUiafData(selectedFile); await TGLogger.Info("[Achievements][importJson] 读取 UIAF 数据成功"); await TGLogger.Info(`[Achievements][importJson] 导入来源:${remoteRaw.info.export_app}`); diff --git a/src/utils/UIAF.ts b/src/utils/UIAF.ts index 261fb03a..907866ba 100644 --- a/src/utils/UIAF.ts +++ b/src/utils/UIAF.ts @@ -54,7 +54,7 @@ export async function getUiafHeader(): Promise { */ export async function verifyUiafData(path: string): Promise { const fileData: string = await fs.readTextFile(path); - const ajv = new Ajv(); + const ajv = new Ajv({ strict: false }); const validate = ajv.compile(UiafSchema); try { const fileJson = JSON.parse(fileData); @@ -65,7 +65,7 @@ export async function verifyUiafData(path: string): Promise { color: "error", }); await TGLogger.Error(`UIAF 数据验证失败,文件路径:${path}`); - await TGLogger.Error(`错误信息 ${validate.errors}`); + await TGLogger.Error(`错误信息 ${validate.errors?.toString()}`); return false; } return true;