Invalid JSON response at file:///E:/Programs/CherryStudio/Cherry%20Studio/resour...
🚨 错误信息
AI_APICallError: Invalid JSON response
at file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:52065:35
at async postToApi$2 (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:51935:11)
at async OpenAIImageModel$1.doGenerate (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:65589:48)
at async _retryWithExponentialBackoff (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:100836:10)
at async Promise.all (index 0)
at async generateImage (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:105533:18)
at async PluginEngine.executeImageWithPlugins (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:153320:19)
at async AiProvider.modernGenerateImage (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:352869:18)
at async AiProvider.generateImage (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:352855:10)
at async fetchImageGeneration (file:///E:/Programs/CherryStudio/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-DInKt6bT.js:353118:17)
🤖 AI解决方案
报错分析报告
1.错误翻译
原文:AI_APICallError: Invalid JSON response
译文:AI API调用错误:无效的JSON响应
2.原因分析
postToApi$2异步函数中处理OpenAI图像模型生成请求时,尝试解析API返回结果的阶段(堆栈中store-DInKt6bT.js:52065:35)。 3. 解决方案
``
javascript
// 修复思路:先读取原始响应文本,验证JSON有效性后再解析
async function safeParseApiResponse(response) {
const text = await response.text(); // 先获取原始文本
try {
return JSON.parse(text); // 尝试解析JSON
} catch (err) {
throw new Error(Invalid JSON response: ${text.slice(0, 200)}...); // 抛出带原始内容的错误
}
}// 使用示例(替换原postToApi$2中的解析逻辑)
async function postToApi$2(url, payload) {
const response = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
return safeParseApiResponse(response); // 用安全解析替代直接json()
}
`4. 预防措施
最佳实践1:调用API后先读取原始响应文本( response.text()),用try-catch包裹JSON.parse,避免直接解析无效内容。
最佳实践2:用Postman或curl预测试API端点,确认返回格式为合法JSON(如 {"data":...}`)。 ---
若需进一步分析,请补充API返回的原始响应文本(前200字符即可)。