Попытка загрузить сгенерированный файл с помощью NODEJS (SyntaxError: неожиданный токен P в JSON в позиции 0 в JSON.parse) - PullRequest
0 голосов
/ 05 ноября 2018

Здравствуйте. Я сгенерировал файл xlsx из запроса в mongodb и пытаюсь загрузить его с помощью res.download. Это мой код:

   const descargaCtrl = {}
   const participantePruebaModel = 
   require('../models/Pruebas/participantePrueba.model');
   var mongoXlsx = require('mongo-xlsx');

   var data = [];

   descargaCtrl.descargaParticipantes = async(req,res,next) =>{
     var consulta = await participantePruebaModel.find({}).lean();
     data = consulta

     var options =  {
       save: true,
       sheetName: [],
       fileName: "Participantes"  + ".xlsx",
       path: "./Descargas/Participantes",
       defaultSheetName: "worksheet"
     }
     var path = './Descargas/Participantes/Participantes.xlsx'
     var fileName = 'Participantes.xlsx'
     /* Generate automatic model for processing (A static model should be 
     used) */
     var model = mongoXlsx.buildDynamicModel(data);

     /* Generate Excel  and download*/
     mongoXlsx.mongoData2Xlsx(data, model, options,function(err, data) {
       if(err){
         console.log(err);
       }
       res.download(path,fileName,function(err){
         if(err){
           console.log(err);
         }else{
           console.log("Downloaded");
           next();      
         }   
       });
     });
     /*  */
   }
   module.exports = descargaCtrl;

И это моя ошибка при попытке загрузить

core.js:1673 ERROR HttpErrorResponse {headers: HttpHeaders, status: 200, 
statusText: "OK", url: "http://localhost:3000/api/descargaParticipantes", 
ok: false, …}error: {error: SyntaxError: Unexpected token P in JSON at 
position 0
at JSON.parse (<anonymous>)
at XMLHttp…, text: "PK↵

Хотелось бы узнать, почему появляется эта ошибка и как ее устранить, если это возможно

Я использую средний стек, и это сервис

import { Injectable } from '@angular/core';
import { Subject } from "rxjs";
import { HttpClient } from "@angular/common/http";

@Injectable({
    providedIn: 'root'
})
export class DescargaDatosService {

    constructor(private http: HttpClient) { }
    readonly URL = "http://localhost:3000/api/descarga";
    descargaParticipantesService(){
        console.log("entra al servicio")
        this.http.get<{message:string}>(`${this.URL}Participantes`).
        subscribe((responseData)=>{
            console.log(responseData.message);
        });
    }
}
...