错误信息: Request was aborted 堆栈信息: DOMException: Request was aborted at AiSdkToChun...
错误信息
错误名称: AbortError
错误信息: Request was aborted
堆栈信息: DOMException: Request was aborted
at AiSdkToChunkAdapter.convertAndEmitChunk (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:322985:13)
at AiSdkToChunkAdapter.readFullStream (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:322782:10)
at async AiSdkToChunkAdapter.processStream (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:322745:32)
at async ModernAiProvider.modernCompletions (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:325482:22)
at async ModernAiProvider._completionsOrImageGeneration (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:325399:10)
at async ModernAiProvider.completions (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:325382:17)
at async fetchChatCompletion (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:325697:2)
at async transformMessagesAndFetch (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:325633:3)
at async fetchAndProcessAssistantResponseImpl (file:///Applications/Cherry%20Studio.app/Contents/Resources/app.asar/out/renderer/assets/store-CA-rHPlI.js:118866:3)
错误原因: "[undefined]"
AI 解决方案
报错分析报告
1.错误翻译
原文:Request was aborted
译文:请求被中止
2.原因分析
AiSdkToChunkAdapter.convertAndEmitChunk 方法中处理流数据时触发DOMException,上下文为Cherry Studio的AI响应流转换过程(modernCompletions → processStream)。3. 解决方案
// 修复思路:捕获AbortError并添加容错/重试逻辑
async function safeProcessStream() {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 15000); // 15秒超时保护
try {
await AiSdkToChunkAdapter.processStream(controller.signal); // 传入中止信号
} catch (error) {
if (error.name === 'AbortError') {
console.warn('⚠️ 请求被中止,尝试重试...');
// 可选:重试逻辑(需限制次数)
// return retryProcessStream();
} else {
throw error; // 抛出其他错误
}
} finally {
clearTimeout(timeout); // 清理超时
}
}
4. 预防措施
AbortError捕获,区分中止与其他错误。 AbortController显式控制请求超时/取消,避免被动中止。 - 推荐工具:浏览器DevTools「Network」面板(查看请求状态)、
axios/fetch的超时配置项。