Необработанное отклонение обещания (идентификатор отклонения: 1): Ошибка: kill ESRCH

Я провел некоторые исследования в Интернете и SOF, но не нашел ничего действительно полезного в этой ошибке.

Я установил Node и Puppeteer с Windows 10 Ubuntu Bash, но мне не удалось заставить его работать, но мне удалось заставить его работать в Windows без Bash на другой машине.

Моя команда:

    node index.js

Мой index.js пытается сделать скриншот страницы:

    const puppeteer = require('puppeteer');

    async function run() {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.goto('https://github.com');
    await page.screenshot({ path: 'screenshots/github.png' });

    browser.close();
    }

    run();

Кто-нибудь знает, как я мог бы исправить эту ошибку "Ошибка: убить ESRCH"?

4 ответа

Я только что исправил эту проблему. Что вам нужно сделать, это следующее:

1) Установите зависимости Debian

Вы можете найти их в этом документе: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md

sudo apt-get install все эти плохие парни.

2) Добавить '--no-sandbox' флаг при запуске кукловода

3) Убедитесь, что ваши windows 10 обновлены. Я пропустил важное обновление, которое позволило вам запустить Chrome.

У меня была такая же проблема, это работало на меня. Попробуйте обновить ваш скрипт следующим образом:

const puppeteer = require('puppeteer');

async function run() {
//const browser = await puppeteer.launch();
const browser = await puppeteer.launch({headless: true, args: ['--no-sandbox'] }); //WSL's chrome support is very new, and requires sandbox to be disabled in a lot of cases.
const page = await browser.newPage();

await page.goto('https://github.com');
await page.screenshot({ path: 'screenshots/github.png' });

await browser.close(); //As @Md. Abu Taher suggested
}

run();
const browser = await puppeteer.launch({ args: ['--no-sandbox'] });

Если вы хотите прочитать все подробности об этом, этот билет имеет их (или ссылки на них). https://github.com/Microsoft/WSL/issues/648

Другие пользователи кукловодов с похожими проблемами: https://github.com/GoogleChrome/puppeteer/issues/290

Я обошел это, софтклинговая chrome.exe для node_modules/puppeteer/.../chrome, как показано ниже

ln -s /mnt/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe  node_modules/puppeteer/.local-chromium/linux-515411/chrome-linux/chrome

Очки не учитывают:

  1. Windows bash не является полной заменой Ubuntu bash (пока). Есть много случаев, когда различные приложения на основе графического интерфейса не работали должным образом. Кроме того, сценарий может быть сбит с толку bash на Windows 10. Он может подумать, что ОС - это Linux, а не Windows.

  2. Windows 10 Bash поддерживает только 64-разрядные двоичные файлы, поэтому убедитесь, что узел и версия Chrome, которые используются внутри, в значительной степени 64-разрядные. Кукловод использует -child.pid убить дочерние процессы вместо child.pid на версии для Windows. Удостоверьтесь, что кукловод не смущается всеми этими вещами bash / windows.

Вернемся к вашему делу.

Ты используешь browser.close() в функции, но это должно быть await browser.close()иначе это не выполняется в правильном порядке.

Также постарайтесь добавить await page.close(); до browser.close();,

Так что код должен быть,

await page.close();
await browser.close();
Другие вопросы по тегам