Skip to content
 

解决 Mac 版钉钉微应用流式输出中的 TypeError: Load failed 错误

更新: 9/11/2025字数: 0 字 时长: 0 分钟

一、问题描述

在 Mac 系统的钉钉微应用开发过程中,当等待后端流式数据输出时,前端控制台抛出 TypeError: Load failed 错误。这种错误通常发生在长时间等待后端响应的场景中,特别是在需要持续接收数据流的应用中。

二、问题分析

经过排查,发现这个问题的主要原因在于:微应用环境特殊性下,在长时间等待后端响应时,浏览器会自动断开连接,导致前端无法接收数据。

三、解决方案:后端添加心跳检测机制

最有效的解决方案是在流式传输过程中,后端定期发送心跳数据包,保持连接活跃状态。由于心跳包其实是发送的一段字符串,前端是不会处理这种格式的流失数据,只是保持常连接状态,从而避免断开连接。

3.1 后端 python 代码示例

python
  elif stream_data["type"] == "heartbeat":
      # 处理心跳包 - 发送保持连接的空消息
      heartbeat_chunk = {
        "id": stream_data["data"]["message_id"],
        "object": "chat.completion.heartbeat",
        "created": stream_data["data"]["timestamp"],
        "message_id": stream_data["data"]["message_id"],
        "type": "heartbeat",
        "data": {
            "message": "connection_alive",
             "timestamp": stream_data["data"]["timestamp"]
             }
        }
        yield f"data: {json.dumps(heartbeat_chunk)}\n\n"

前端不用处理心跳包,只需要保持连接状态即可。

我见青山多妩媚,料青山见我应如是。