首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular7:无法设置{responseType:'text'}

Angular7:无法设置{responseType:'text'}
EN

Stack Overflow用户
提问于 2018-12-05 07:29:37
回答 2查看 14.6K关注 0票数 10

场景:在从Angular7调用API时,我调用Node (通过Angular7)并返回字符串类型的块数据--我想捕获这个字符串数据并将其显示为string。

服务器端:从节点后端发送的数据是“文本”而不是json.数据通过多个res.write(“一些字符串”)语句发送

客户端的角度:我想要一个可观察的处理这些数据.

  1. 当我没有提到任何responseType返回this.http.get(this.streamURL );我得到了错误:

SyntaxError:意外令牌{在JSON.parse ()位置12处的JSON中

  1. 当我没有提到responseType 'text返回this.http.get(this.streamURL,{ responseType:‘text’});.我在编译时得到错误:

src/app/myS.service.ts中的错误(24,54):错误TS2322:键入‘text’‘不能指定键入’json‘’

我如何从我的节点JS后端获取“文本”数据..。我在我的节点中使用npm,所以没有cors错误。

演示代码可在这里获得:https://stackblitz.com/edit/angular-44sess

我的后端在下面的片段中:

代码语言:javascript
复制
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);
  
});

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-05 08:01:20

在这种情况下,我总是使用以下模式:

代码语言:javascript
复制
returnObservable(): Observable<any> {
  const requestOptions: Object = {
    /* other options here */
    responseType: 'text'
  }
  return this.http.get<any>(this.streamURL , requestOptions);
}

希望它能回答你的问题!

票数 21
EN

Stack Overflow用户

发布于 2018-12-05 08:18:38

不能使用返回泛型类型。在文档中,泛型类型仅用于“json”。这意味着你需要像这样使用get:

代码语言:javascript
复制
return this.http.get(this.streamURL, { responseType: "text"});

参见文档https://angular.io/api/common/http/HttpClient#get,您是兴趣重载#11,现在您正在使用重载#13

最后,这是更新代码的链接:https://stackblitz.com/edit/angular-gv1tkl?file=src/app/myS.service.ts

编辑1

我把错误的链接粘贴到stackblitz。正确的上面。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53627244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档