为什么Vite+Vue3与Vue2+Electron处理fetch流式数据结果不同?

使用fetch处理流式数据,在vite+vue3的项目中,结果为流式的,但是在vue2+electron的项目中,数据就变成一次性返回了

const controller = new AbortController();
      const signal = controller.signal;
      const response = await fetch("/v1/services/aigc/text-generation/generation", {
        method: "POST",
        signal,
        headers: {
          "Content-Type": "application/json",
         Authorization: `Bearer ${dash_scope_apikey}`,
          Accept: "text/event-stream"
        },
        body: JSON.stringify({
          model: "qwen-plus-0723",
          input: {
            messages: [
              {
                role: "user",
                content: "介绍一下你自己"
              }
            ]
          },
          parameters: {
            result_format: "message",
            incremental_output: true
          }
        })
      });
      if (response.ok) {
        const reader = response.body.getReader();
        const decoder = new TextDecoder();
        while (true) {
          const { value, done } = await reader.read()
          if (done) break
          const chunk = decoder.decode(value, { stream: true })
          console.log(chunk);
        }
      }

两个项目请求是一样的,但是结果不同,如下
vue2+electron electron版本为20.3.12,vue的版本为2.7.14
image.png

vite+vue3 vue的版本为3.4.29,vite的版本为5.3.1
image.png

求大佬解答

阅读 1k
1 个回答

我答过类似的问题,如果是本地开发环境应该就是这个原因:

https://segmentfault.com/q/1010000044054768/a-1020000044063407

只不过当时这个问题里题主是直接用的 Webpack,你现在如果是要是用 vue-cli 脚手架的话要改的地方也是一样的(vue-cli 背后就是 Webpack)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏