代码之家  ›  专栏  ›  技术社区  ›  Akber Iqbal

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

  •  1
  • Akber Iqbal  · 技术社区  · 6 年前

    脚本 在Angular7的API调用中,我调用Node(通过express)并返回string类型的分块数据——我想捕获这个字符串数据并将其显示为string

    服务器端:

    客户端角度:

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

    SyntaxError:JSON中位置12处的意外标记{

    the error on stackBlitz and similar error at compile time on ng serve

    1. 当我没有将responseType提到为“text[返回this.http.get(this.streamURL,{responseType:'text'});]。。。我在编译时出错:

    不可分配给类型“json”

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

    可从以下网址获得: https://stackblitz.com/edit/angular-44sess

    我的 后端

    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);
      
    });
    2 回复  |  直到 6 年前
        1
  •  19
  •   David Dehghan    6 年前

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

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

    希望它能回答你的问题!

        2
  •  9
  •   Łukasz Wojtanowski    6 年前

    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

    推荐文章