我已经对Web和SOF进行了一些研究,但发现没有什么对这个错误有帮助。
我使用Windows 10 Ubuntu Bash安装了Node和Puppeteer,但是没有设法让它工作,但我设法让它在没有Bash的Windows上工作。
我的命令是:
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”错误?
答案 0 :(得分:1)
我有同样的问题,这对我有用。 尝试将脚本更新为以下内容:
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#issuecomment-322851507
答案 1 :(得分:1)
我刚刚解决了这个问题。您需要做的是:
1)安装Debian依赖项
您可以在此文档中找到它们: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
sudo apt-get install
所有那些坏男孩。
2)启动puppeteer时添加'--no-sandbox'
标志
3)确保您的Windows 10是最新的。我错过了一个允许您启动Chrome的重要更新。
答案 2 :(得分:0)
积分不予考虑:
Windows bash不是Ubuntu bash(还)的完全替代品。在许多情况下,不同的基于GUI的应用程序无法正常工作。此外,脚本可能会被Windows 10上的bash混淆。它可能认为os是linux而不是windows。
Windows 10 bash仅支持 64位二进制文件,因此请确保内部使用的节点和chrome版本几乎是64位。 Puppeteer正在使用-child.pid
来杀死子进程而不是Windows版本上的child.pid
。确保木偶操作者不会被所有这些bash / windows事物弄糊涂。
回到你的案子。
您在函数中使用browser.close()
,但它应该是await browser.close()
,否则它的执行顺序不正确。
此外,您应该尝试在await page.close();
之前添加browser.close();
。
所以代码应该是,
await page.close();
await browser.close();
答案 3 :(得分:0)
我通过将chrome.exe软件链接到node_modules / puppeteer /.../ chrome来解决这个问题,如下所示
b