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. 解决方案


    // 修复思路:先读取原始响应文本,验证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字符即可)。