【发布时间】:2019-05-06 17:22:32
【问题描述】:
场景: 在来自 Angular7 的 API 调用中,我正在调用 Node(通过 express)并返回字符串类型的分块数据 - 我想捕获此字符串数据并将其显示为字符串
服务器端: 从 Node 后端,发送的数据是 'text' 而不是 json...数据是通过多个 res.write('some strings') 语句发送的
Angular 中的客户端: 我想要一个 observable 来处理这些数据......
- 当我没有提到任何 responseType [return this.http.get(this.streamURL);]... 我得到错误:
SyntaxError: Unexpected token { in JSON at position 12 在 JSON.parse() 处
- 当我没有提到 responseType 为 'text [return this.http.get(this.streamURL , { responseType: 'text'});]... 我在编译时遇到错误:
src/app/myS.service.ts(24,54) 中的错误:错误 TS2322:类型“文本”是 不能分配给类型 '"json"'
如何从我的 Node JS 后端捕获“文本”数据...我在我的 Node 中使用 npm cors,所以那里没有 CORS 错误
演示代码在此处提供:https://stackblitz.com/edit/angular-44sess
我的后端在下面的sn-p中:
app.get('/obs/responseWrite', cors(), function(req, res){
var j=0;
const headers = {
'Content-Type': 'text',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',
'Access-Control-Max-Age': 2592000, // 30 days
};
res.writeHead(200,headers);
for(var i=0; i<50000; i++){
/* setInterval(function() { res.write("returning j:["+ j + "]. "); j=j+1; if(j>=100){res.end();} }, 1000); */
var myObj = { return : i };
var myStr= JSON.stringify(myObj);
console.log(myStr);
res.write(myStr);
}
setInterval(function() { res.end(); }, 15000);
});
【问题讨论】:
-
尝试一次
return this.http.get(this.streamURL , { responseType: 'text'});remove any。
标签: node.js angular angular7 chunked