Метод ToFile библиотеки Nodejs не входит в код обратного вызова - PullRequest
1 голос
/ 31 октября 2019

Я использую библиотеку sharp Nodejs, найденную здесь: https://github.com/lovell/sharp. Я пытаюсь сделать несколько снимков экрана, а затем соединить изображения вместе, используя библиотеку Sharp.

Вот мой код. Я использую Puppeteer, чтобы делать скриншоты страницы, сохраняя в памяти в виде двоичного файла и объединяя эти двоичные файлы вместе, используя метод Sharp composite().

let pagePath = 'path/to/file.png';
let maxScreenshotHeight = 2000;

// Loop over sections of the screen that are of size maxScreenshotHeight.
for (let ypos = 0; ypos < contentSize.height; ypos += maxScreenshotHeight) {
    const height = Math.min(contentSize.height - ypos, maxScreenshotHeight);
    let image = await page.screenshot({
        encoding: 'binary',
        clip: {
            x: 0,
            y: ypos,
            width: contentSize.width,
            height
        }
    });

    composites.push({input: image, gravity: 'southeast'});
}

sharp()
.composite(composites)
.toFile(pagePath, function(err) {
    if (err) {
        console.log('fail');
        return;
    }
    console.log('complete');
});

Однако в обратном вызове toFile ничегокогда-либо будет зарегистрирован. Регистрация в консоли работает, так как я добавил журналы до и после оператора toFile, но кажется, что этот вызов функции никогда не завершается. Я хочу создать png-файл, который позже смогу загрузить.

Как объединить несколько снимков экрана и сохранить их на сервере для последующей загрузки? Я неправильно использую toFile?

...