catamphetamine / read-excel-file

Read *.xlsx files in a browser or Node.js. Parse to JSON with a strict schema.

Home Page:https://catamphetamine.gitlab.io/read-excel-file/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FILE ENDED error when trying to parse excel file

faryalzuberi opened this issue · comments

I have deployed my code on an Azure App Service container that is running node version v12.16.3. My code works perfectly on my local machine and I am able to parse the same excel file. However on my production environment on Azure I run into this error. The parsing succeeds on every 6th/7th attempt on average.

2020-08-18T08:32:26.341702094Z Error: FILE_ENDED
2020-08-18T08:32:26.342260891Z     at Parse.pull (/node_modules/read-excel-file/node_modules/unzipper/lib/PullStream.js:80:28)
2020-08-18T08:32:26.342421390Z     at Parse.emit (events.js:310:20)
2020-08-18T08:32:26.344061183Z     at Parse.<anonymous> (/node_modules/read-excel-file/node_modules/unzipper/lib/PullStream.js:20:10)
2020-08-18T08:32:26.344410281Z     at Parse.emit (events.js:322:22)
2020-08-18T08:32:26.344805879Z     at finishMaybe (_stream_writable.js:639:14)
2020-08-18T08:32:26.344834579Z     at endWritable (_stream_writable.js:656:3)
2020-08-18T08:32:26.345403076Z     at Parse.Writable.end (_stream_writable.js:595:5)
2020-08-18T08:32:26.345778374Z     at ReadStream.onend (_stream_readable.js:660:10)
2020-08-18T08:32:26.346147072Z     at Object.onceWrapper (events.js:416:28)
2020-08-18T08:32:26.346483171Z     at ReadStream.emit (events.js:322:22)
2020-08-18T08:32:26.346493971Z     at endReadableNT (_stream_readable.js:1187:12)
2020-08-18T08:32:26.346961268Z     at processTicksAndRejections (internal/process/task_queues.js:84:21)

read-excel-file v4.0.7
unzipper version v0.9.15

async function parseFileAsJSONArray(filePath) {
    try {
        return await readXlsxFile(filePath).then((rows) => {
            return rows.map((col) => {
                return col.filter((data) => {
                    return data != null;
                })
            })
        });
    } catch (e) {
        console.log(e);
        return null;
    }

}

router.post('/uploadFile', upload.single("data"), functions.checkRouteSecurity, async (req, res) => {

    if (!req.file) return res.send({ success: false, message: "No file provided" });
    var dataArray = await parseFileAsJSONArray(req.file.path);
    fs.unlink(req.file.path, () => { console.log('deleted file ' + req.file.path) }); // delete file
    if (!(dataArray && dataArray.length > 0)) return res.send({ success: false, message: "Error. Could not parse file" });
    else {
     ...
        res.send(response);
    }
});

I think this has something to do with using the await function, I'm trying to figure this out now too

I think this has something to do with using the await function, I'm trying to figure this out now too

I have changed my code to use only promises with .then and this error still pops up from time to time. It doesn't happen all the time, which is actually more frustrating as it makes it super hard to debug.

I think this has something to do with using the await function, I'm trying to figure this out now too

I have changed my code to use only promises with .then and this error still pops up from time to time. It doesn't happen all the time, which is actually more frustrating as it makes it super hard to debug.

I am getting the same error, it's true - it doesn't pops up all the time.