我正在运行一个非常简单的函数。
module.exports.test = async () => {
const browser = await puppeteer.launch(puppetOptions);
try {
const page = await browser.newPage();
await page.goto('https://google.com');
// helper function that pauses for five seconds before moving on
await pause(5000);
await browser.close();
console.log('browser closed');
} catch (err) {
console.log(err);
await browser.close();
}
}
我从index.js
文件运行它:
const server = app.listen(process.env.PORT || 5000, () => {
test();
});
现在我用node index.js
在我的终端上运行它。它打开了一个浏览器。它打开了一个新页面并导航到Google。它等待了五秒钟。它关闭了浏览器。一切看起来都很好。我在终端上点击ctrl + c
来停止进程,但什么也没有发生。通常情况下,这是有效的。如果我删除browser.close
函数,ctrl + c
会恢复预期的工作,并结束进程。我运行的这个函数是我分解了一个更复杂的函数的结果,这个函数似乎有内存泄漏,所以看起来browser.close
确实是罪魁祸首。但是对于我的生活,我不明白为什么它会在简化这么多的时候引起问题。这在headless
,和headfull
模式。以下是 puppet 师启动选项:
puppetOptions = {
defaultViewport: null,
args: [
"--incognito",
"--no-sandbox",
"--single-process",
"--no-zygote"
],
}
puppetOptionsHeadfull = {
headless: false,
executablePath: 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe',
}
编辑:我在我的bash终端中也试过这个,也有同样的问题。当我试图手动关闭终端以中止它时,弹出一个错误。
Processes are running in session:
| WPID PID COMMAND
| 10900 1122 winpty node.exe index.js
Close anyway?
编辑2:缩小到它是一个问题与puppeteer-extra
最有可能,然而,它似乎是一个错误的核心包.公平最近公开的问题,他们的仓库,反映了这个错误发现在这里:https://github.com/berstend/puppeteer-extra/issues/421
我将保留这个问题,以防其他人遇到同样的问题,他们不会拔出头发调试它。
2条答案
按热度按时间58wvjzkj1#
我也遇到过这个问题。在我看来,两个参数'--no-sandbox'和'--disable-setuid-sandbox'是罪魁祸首,尽管这不是直观的原因。尝试删除no sandbox参数
vd2z7a6w2#
这取决于标志的组合。如果我们需要无头模式和--no-sandbox标志,那么试试这个 puppet 师启动代码: