mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-09-20 13:40:11 +08:00
fix(download): 下载失败时补全日志,避免卡在"正在获取 Metalink"突兀退出
- 主进程 Metalink 下载请求失败显式 sendLog 并回传渲染端(原仅静默 logger.error) - aria2c 拉起失败补 sendLog 日志 - Metalink 写入完成补 sendLog 提示 - 渲染端 install-complete 失败分支将错误原因写入 logs,并补成功/失败终止日志 - 配套: 缓存修复(C1 主进程 no-cache + C2 axios ?_t 版本戳) 已在上一提交实现 - 文档 docs/app-list-cache-analysis.md 新增第8节下载日志断层修复方案
This commit is contained in:
@@ -547,21 +547,31 @@ async function runDownloadPhase(task: InstallTask) {
|
||||
|
||||
sendLog(`正在获取 Metalink 文件: ${task.metalinkUrl}`);
|
||||
|
||||
const response = await axios.get(task.metalinkUrl, {
|
||||
baseURL: "https://erotica.spark-app.store",
|
||||
responseType: "stream",
|
||||
});
|
||||
let response: Awaited<ReturnType<typeof axios.get>>;
|
||||
try {
|
||||
response = await axios.get(task.metalinkUrl, {
|
||||
baseURL: "https://erotica.spark-app.store",
|
||||
responseType: "stream",
|
||||
});
|
||||
} catch (err) {
|
||||
// Metalink 请求失败(网络/404/超时等):明确回传渲染端,避免 UI 停在"正在获取"后突兀退出
|
||||
const reason = err instanceof Error ? err.message : String(err);
|
||||
logger.error(`Task ${id} Metalink 下载请求失败: ${reason}`);
|
||||
sendLog(`获取 Metalink 失败: ${reason}`);
|
||||
throw new Error(`获取 Metalink 失败: ${reason}`);
|
||||
}
|
||||
|
||||
const writer = fs.createWriteStream(metalinkPath);
|
||||
response.data.pipe(writer);
|
||||
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
writer.on("finish", resolve);
|
||||
writer.on("finish", () => {
|
||||
sendLog("Metalink 文件下载完成");
|
||||
resolve();
|
||||
});
|
||||
writer.on("error", reject);
|
||||
});
|
||||
|
||||
sendLog("Metalink 文件下载完成");
|
||||
|
||||
// 清理下载目录中的旧文件(保留 .metalink 文件),防止 aria2c 因同名文件卡住
|
||||
const existingFiles = fs.readdirSync(downloadDir);
|
||||
for (const file of existingFiles) {
|
||||
@@ -675,6 +685,7 @@ async function runDownloadPhase(task: InstallTask) {
|
||||
});
|
||||
child.on("error", (err) => {
|
||||
clearInterval(timeoutChecker);
|
||||
sendLog(`aria2c 启动失败: ${err.message}`);
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user