Не удается прочитать канал свойств undefined в синтаксическом анализаторе csv - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь загрузить большой CSV-файл размером 10 МБ с помощью CSV-парсера и сформировать данные в node js при отправке запроса в API с топором ios. Мой код следующий:

//insert new data
    else if (`${flags.newdata}` !== "undefined" && `${flags.source}` !== "undefined" ){
        var csv=require('csv-parser');
        var FormData=require('form-data');
        const form_data = new FormData();
        var data = [];
        form_data.append("file", fs.createReadStream(`${flags.source}`)).pipe(csv()).on('data',function(row){ data.push(row) }).on('end',function(){console.log('Data Loaded')});

        /*const request_config = {
            headers: {
                "Authorization": token,
                "Content-Type": "multipart/form-data"
        },
        data: form_data
        };*/

        return axios.post('https://localhost:8765/energy/api/Admin/' + `${flags.newdata}`, form_data);
    }

Я получаю следующую ошибку:

TypeError: Cannot read property 'pipe' of undefined

Я прочитал похожие вопросы, но никто не помог. Как я могу решить это?

1 Ответ

0 голосов
/ 26 февраля 2020

Похоже, что вы хотите передать не поток, а результат append (), но append return undefined. Пожалуйста, используйте трубу, как это:

 var readStream = fs.createReadStream(`${flags.source}`);

 readStream.on('open', function () {

   readStream.pipe(csv());

 });
 readStream
   .on('data',function(row){ data.push(row) })
   .on('end',function(){console.log('Data Loaded')});
...