gpt4 book ai didi

node.js - Angular7:无法设置{responseType: 'text'}

转载 作者:行者123 更新时间:2023-12-02 14:08:57 24 4
gpt4 key购买 nike

场景:在从 Angular7 进行 API 调用时,我正在调用 Node(通过 Express)并返回字符串类型的分块数据 - 我想捕获此字符串数据并将其显示为字符串

服务器端:从 Node 后端发送的数据是“text”而不是 json...数据是通过多个 res.write('some strings') 语句发送的

Angular 中的客户端:我想要一个可观察的对象来处理这些数据...

  1. 当我没有提及任何responseType [return this.http.get(this.streamURL );]...我收到错误:

SyntaxError: Unexpected token { in JSON at position 12 at JSON.parse ()

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

  • 当我没有提到responseType为'text [return this.http.get(this.streamURL, {responseType: 'text'});]...我在编译时收到错误:
  • ERROR in src/app/myS.service.ts(24,54): error TS2322: Type '"text"' is not assignable to type '"json"'

    如何从 Node JS 后端捕获“文本”数据...我在 Node 中使用 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);

    });

    最佳答案

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

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

    希望它能解答您的问题!

    关于node.js - Angular7:无法设置{responseType: 'text'},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53627244/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com