错误信息: Failed to fetch 堆栈信息: AI_ProviderSpecificError: Failed to fetch at AiSdkTo...
🚨 错误信息
错误名称: AI_ProviderSpecificError
错误信息: Failed to fetch
堆栈信息: AI_ProviderSpecificError: Failed to fetch
at AiSdkToChunkAdapter.convertAndEmitChunk (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:349612:64)
at AiSdkToChunkAdapter.readFullStream (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:349403:10)
at async AiSdkToChunkAdapter.processStream (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:349365:31)
at async AiProvider.modernCompletions (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:352803:22)
at async AiProvider.completions (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:352722:17)
at async fetchChatCompletion (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:353072:2)
at async transformMessagesAndFetch (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:353000:3)
at async fetchAndProcessAssistantResponseImpl (file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:168337:3)
at async file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:168632:4
at async file:///D:/cherrystudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:143305:21
错误原因: {}
🤖 AI解决方案
报错分析报告
1.错误翻译
原文:Failed to fetch
译文:获取资源失败
2. 原因分析
AiSdkToChunkAdapter.convertAndEmitChunk函数中,处理流转换时发起的fetch请求失败。3.解决方案
``
javascript
// 修复思路:添加网络检查、重试机制与错误捕获
async function safeFetch(url, options = {}, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
const response = await fetch(url, options);
if (!response.ok) throw new Error(HTTP ${response.status});
return response;
} catch (err) {
if (i === retries - 1) throw err; // 最后一次重试失败则抛出
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1))); // 指数退避
}
}
}// 使用示例(替换原fetch调用)
try {
const stream = await safeFetch(apiUrl, { method: 'POST', body: JSON.stringify(data) });
// 后续流处理逻辑...
} catch (err) {
console.error('请求最终失败:', err.message);
}
`
4. 预防措施
最佳实践1:请求前通过 navigator.onLine(浏览器)或ping命令(Node.js)检查网络状态。
最佳实践2:用Axios替代原生 fetch`,其内置拦截器可统一处理超时、重试与错误日志。
---
注:若问题持续,需检查API密钥有效性、服务端状态及本地防火墙设置。