Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 未处理的承诺拒绝(拒绝id:1):错误:kill ESRCH_Node.js_Bash_Web Scraping_Puppeteer - Fatal编程技术网

Node.js 未处理的承诺拒绝(拒绝id:1):错误:kill ESRCH

Node.js 未处理的承诺拒绝(拒绝id:1):错误:kill ESRCH,node.js,bash,web-scraping,puppeteer,Node.js,Bash,Web Scraping,Puppeteer,我对网络和软件做了一些研究,但没有发现对这个错误有什么真正的帮助 我用Windows10UbuntuBash安装了Node和Puppeter,但没有成功地使它工作,但我设法使它在Windows上工作,而在其他机器上没有Bash 我的命令是: node index.js My index.js尝试拍摄页面的屏幕截图: const puppeteer = require('puppeteer'); async function run() { const brow

我对网络和软件做了一些研究,但没有发现对这个错误有什么真正的帮助

我用Windows10UbuntuBash安装了Node和Puppeter,但没有成功地使它工作,但我设法使它在Windows上工作,而在其他机器上没有Bash

我的命令是:

    node index.js
My 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();
有人知道我如何修复这个“Error:kill ESRCH”错误吗?

无需考虑:

  • WindowsBash还不能完全替代UbuntuBash。在许多情况下,不同的基于GUI的应用程序无法正常工作。此外,windows 10上的bash可能会混淆脚本。它可能认为操作系统是linux而不是windows

  • Windows 10 bash仅支持64位二进制文件,因此请确保内部使用的节点和chrome版本几乎都是64位的。Puppeter正在使用
    -child.pid
    杀死子进程,而不是windows版本上的
    child.pid
    。确保木偶演员不会被这些bash/windows的东西弄糊涂

  • 回到你的案子上来

    您正在函数中使用
    browser.close()
    ,但它应该是
    等待browser.close()
    ,否则它的执行顺序不正确

    另外,您应该尝试添加
    wait page.close()
    浏览器之前。关闭()

    所以代码应该是

    await page.close();
    await browser.close();
    

    我也有同样的问题,这对我很有效。 尝试将脚本更新为以下内容:

    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'] });
    
    如果您想阅读有关此的所有详细信息,此票证中有这些信息(或指向它们的链接)。

    其他有类似问题的木偶演员用户:
    我刚刚解决了这个问题。您需要执行以下操作:

    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'] });
    
    1) 安装Debian依赖项

    您可以在此文档中找到它们:

    sudo要安装那些坏家伙

    2) 在启动木偶玩家时添加
    '--no sandbox'
    标志


    3) 确保您的windows 10是最新的。我错过了一个重要的更新,该更新允许您启动Chrome。

    我通过将Chrome.exe软链接到node_modules/puppeter/../Chrome解决了这个问题,如下所示

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

    当没有这样的pid运行时,kill抛出ESRCH。添加try-catch语句以记录错误并获取行号。然后你需要深入研究产生这个错误的命令(或者更新你的问题)@paul我在WSL中得到了与puppeter相同的行为。也就是说,这些天我可以无头地进行业力测试。