Invalid JSON response at file:///E:/Programs/CherryStudio/Cherry%20Studio/resour...

2026年05月05日 21:38 状态: processing

🚨 错误信息

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.原因分析


  • 根本原因:API调用返回的响应内容不符合JSON格式规范,导致解析失败。

  • 发生位置postToApi$2异步函数中处理OpenAI图像模型生成请求时,尝试解析API返回结果的阶段(堆栈中store-DInKt6bT.js:52065:35)。

  • 上下文:生成图像时调用AI接口,接口返回了非JSON格式的内容(如HTML错误页、空字符串或损坏数据)。
  • 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:用Postmancurl预测试API端点,确认返回格式为合法JSON(如{"data":...}`)。

  • 工具推荐:开启API响应的详细日志(记录原始文本),快速定位无效内容来源。
  • ---
    若需进一步分析,请补充API返回的原始响应文本(前200字符即可)。