В настоящее время я пытаюсь экспортировать csv, используя nodejs в качестве внутреннего и углового в качестве внешнего интерфейса.
Я знаю, что ошибка «Неожиданный токен N в JSON» означает, что произошла ошибка синтаксического анализа JSON.Это означает, что мне нужно изменить {responseType: "blob" на "json"}.Но есть проблема, потому что я не могу включить их в параметры httpServices, потому что он принимает только HttpParams в качестве параметров
Так что в отношении этого я пробовал эти
1) return this.httpService.get(`/chatbots/get/${id}/download`, {responseType: 'text'})
, который возвращаетошибка, так как httpService принимает только HttpParams в качестве параметров
2) Измените HttpServices с @ core / services на HttpClient, но это не сработало, поскольку у меня есть другой вызов API внутри текущего вызова API, который использует HTTPServices.
3) Измените его на метод post, где я могу прикрепить {responseType: "blob" как "json"}, но он не сработал и в любом случае он должен работать как get?
В настоящее время на выходе уже отображается текст в формате csv.
router.get('/get/:id/download', passport.authenticate('jwt', {
session: false
}), (req, res, next) => {
.....
console.log(output)
res.attachment('test.csv')
res.send(output)
}
В службах:
import { HttpService } from '../../@core/services';
constructor(
private httpService: HttpService, ) {}
...
downloadCSV(id: string) {
return this.httpService.get(`/xxxx/get/${id}/download`)
}
в компоненте
export() {
if (this.id) {
this.chatbotService.downloadChatbot(this.id)
.subscribe((data: any) => {
const blob = new Blob([data], { type: 'text/csv' });
const fileName = `${this.id}-test.csv`;
saveAs(blob, fileName);
})
}
}
Даже еслистатус 200, он говорит
SyntaxError: неожиданный токен N в JSON в позиции 0 в JSON.parse () в XMLHttpRequest.onLoad (http://localhost:8080/vendor.js:22263:51) в ....