Node.js 未处理的承诺拒绝(拒绝id:1):错误:kill ESRCH
我对网络和软件做了一些研究,但没有发现对这个错误有什么真正的帮助 我用Windows10UbuntuBash安装了Node和Puppeter,但没有成功地使它工作,但我设法使它在Windows上工作,而在其他机器上没有Bash 我的命令是: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
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”错误吗?无需考虑:
-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相同的行为。也就是说,这些天我可以无头地进行业力测试。