使用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
vite+vue3 vue的版本为3.4.29,vite的版本为5.3.1
求大佬解答
我答过类似的问题,如果是本地开发环境应该就是这个原因:
只不过当时这个问题里题主是直接用的 Webpack,你现在如果是要是用 vue-cli 脚手架的话要改的地方也是一样的(vue-cli 背后就是 Webpack)。