Axios и TypeError: «значение циклического объекта» - PullRequest
0 голосов
/ 19 декабря 2018

Я продолжаю получать сообщение об ошибке в заголовке и не могу понять, почему.

У меня болезненный квест, чтобы создать сразу несколько (5-10) файлов PDF и отправить их все на мой сервер.

когда я нажимаю кнопку, запускается цикл for, который генерирует строки и столбцы в виде массивов.Для отправки в jsPDF

  uploadMultipleContracts = (e) => {

    let pdf = []
    const columns = [
        { title: 'Date', dataKey: 'date' },
        { title: 'User', dataKey: 'user' },
         ....
    ]

    const rows = []
    for (let i = 0; i < this.state.multipleDetailContract.length; i += 1) {
            rows.push({
                date: this.state.multipleDetailContract[i].date,
                user: this.state.multipleDetailContract[i].user,
                ....
            })

        if(e.target.name === "save"){
            pdf.push(this.sendMultiPDF(columns, rows));
        }
    }

    console.log(pdf)
    this.pdfSender(pdf)

};

Затем мы помещаем возвращаемое значение (pdf файл из this.sendMultiPDF(columns, rows)) в массив let pdf = [] pdf, после чего console.log() напечатает массив выбранных файлов PDF, это выглядитКак и следовало ожидать, 5-10 объектов в массиве выглядят как настоящий PDF.

, затем мы отправляем этот массив в this.pdfSender(pdf) с аксиосами в нем

pdfSender = (data) => {
    axios.post(`${process.env.API_URL + process.env.API_PORT}api/test`,
        data,
        {
            responseType: 'arraybuffer',
            headers: {
                'Content-Type': 'application/json',
                'Accept': 'application/pdf'
            }
        })
        .then(function () {
            console.log('SUCCESS!!');
        })
        .catch(function (error) {
            console.log(error);
        })
};

, ноpdfSender перехватит и выдаст ошибку TypeError: "cyclic object value"

Все, что сделал Google, - это какое-то объяснение ссылки на сам объект.Я не знаю, или не могу понять, как это было бы.

multipleDetailContract:

{
 "contractid" : "xxxx",
 "user" : "xxxxxx",
 "date" : 12-03-18,
 "hasUpperLimit" : "true",
 "alert" : null,
 "fees" : yyyyy
} 
...