chuikoffru
@chuikoffru
Full Stack JS Developer

Почему возникает ошибка в асинхронной итерации модуля fs node js?

Написал js тест:
import fsp from 'fs-promise';

describe("Video", () => {
    const path = __dirname + '/../assets/video/';
    let files;
    let arr = [];

    it("Получить список видеофайлов", async () => {
        files = await fsp.readdir(path);
    });

    it("Составить массив из списка файлов с размерами", async () => {
        for(let file of files) {
            let stat = await fsp.stat(path + file);
            let filesize = parseFloat(stat.size / 1024 / 1024).toFixed(1);
            arr.push([{
                filename : file.split('.')[0],
                filesize : filesize,
                isDir : stat.isDirectory(),
                command : stat.isFile() ? `get:${file}` : `to:${file}`
            }]);
        }
    });

    it("Вывести массив с данными о файле", () => {
        console.log(arr);
    })
});


Тест прекрасно выполняется. Теперь перехожу к реальному сервису:

import fsp from 'fs-promise';
import bot from '../bot';

const path = __dirname + '/../../assets/video/';

export default async () => {

    let markup = [];

    let files = await fsp.readdir(path);

        for(let file of files) {
            let stat = await fsp.stat(path + file);
            let filesize = parseFloat(stat.size / 1024 / 1024).toFixed(1);
            console.log({
                text : file.split('.')[0],
                filesize : filesize,
                callback_data : stat.isFile() ? `get:${file}` : `to:${file}`
            });
            /*markup.push([{
                text : file.split('.')[0],
                filesize : filesize,
                callback_data : stat.isFile() ? `get:${file}` : `to:${file}`
            }]);*/
        }
        return bot.inlineKeyboard(markup);
  }


Все прекрасно работает и выводит в консоль что нужно. Но если раскоментировать push, то возникает проблема:

(node:33763) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): [object Object]
(node:33763) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
  • Вопрос задан
  • 217 просмотров
Пригласить эксперта
Ответы на вопрос 1
mak_ufo
@mak_ufo
Попробуйте
markup.push({name: i, type: 'file'});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы