Сценарий: после вызова API из Angular7 я вызываю Node (через экспресс) и возвращаю фрагментированные данные типа string - я хочу захватить эти строковые данные и отобразить их как строку
На стороне сервера: из серверной части узла данные отправляются в виде "текста", а не в формате json ... данные отправляются с помощью нескольких операторов res.write ("некоторые строки").
на стороне клиента в Angular: я хочу, чтобы наблюдаемый обработал эти данные ...
- когда я не упоминаю никакого responseType [return this.http.get (this.streamURL);] ... я получаю сообщение об ошибке:
SyntaxError: неожиданный токен {в JSON на позиции 12 в JSON.parse ()
- когда я не упоминаю responseType как текст [return this.http.get (this.streamURL, {responseType: 'text'});] ... я получаю ошибку во время компиляции:
ОШИБКА в src / app / myS.service.ts (24,54): ошибка TS2322: тип «текст» не может быть назначен типу «json»
как я могу захватить "текстовые" данные из моего бэкэнда Node 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);
});
return this.http.get(this.streamURL , { responseType: 'text'});
удалите все. - person ashish pal   schedule 05.12.2018