尝试运行以下代码:
var puppeteer = require("puppeteer");
puppeteer.launch().then(async browser => {
let page = await browser.newPage();
await page.goto('https://google.com');
await page.screenshot({ path: 'screenshot.png' });
browser.close();
});
我收到一个错误:
Error: EPERM: operation not permitted, unlink 'C:\Users\tivac\Desktop\puppeteer-testing\node_modules\puppeteer\.dev_profile1\CrashpadMetrics-active.pma'
在调试过程中,将DEBUG=*
为尝试了解发生故障的位置,但是这样做之后效果很好。 😕
在非DEBUG
模式下,初次运行体验不是很正常吗? 我不确定,但这就是发生在我身上的事情!
[email protected]
[email protected]
[email protected]
推测:您可能不小心启动了该脚本两次,并且两个平行的操纵up试图使用相同的配置文件文件夹- .dev_profile1
运行chrome。
我们应该随机生成配置文件文件夹名称,以便木偶扮演者的并行运行正常。
这是可能的! 尽管似乎不太可能,因为我是通过CLI启动节点的,并且除了想设置浏览器外,没有做任何超出最初设置headless : false
事情。 每次复制,直到设置DEBUG
,此时一切都开始正常运行。
+1
你好
我刚刚只使用了操纵up,但仍然遇到相同的错误。 我使用了https://github.com/GoogleChrome/puppeteer/#usage第一个示例脚本。
我也遇到了这个问题,尽管使用了一个甚至更简单的示例脚本,该脚本仅启动浏览器,然后立即尝试将其关闭:
const puppeteer = require('puppeteer');
(async () => {
console.log("Launching browser.");
const browser = await puppeteer.launch();
console.log("Closing browser.");
browser.close();
})();
我尝试在运行此脚本之前手动删除node_modules/puppeteer/.dev_profile1
目录,但该错误仍然发生。
解决方法是,我发现在完成后仅调用process.exit(0)
正常工作-即使在父进程意外终止的情况下,木偶手似乎也很喜欢清理任何已启动的Chromium子进程,太好了!
我在运行用法演示的头几次就看到了,但是每次都没有得到。 大约十分钟后,我看到成功远远超过运行脚本的错误。 我不确定是否有帮助。
同样的问题,Windows 10,节点v7.10.0,操纵up 1.0.0。 设置DEBUG = *无效,尝试以管理员身份运行
D:\puppeteer>node index.js
fs.js:1081
return binding.unlink(pathModule._makeLong(path));
^
Error: EPERM: operation not permitted, unlink 'D:\puppeteer\node_modules\puppeteer\.dev_profile1\CrashpadMetrics-active.pma'
at Object.fs.unlinkSync (fs.js:1081:18)
at fixWinEPERMSync (D:\puppeteer\node_modules\rimraf\rimraf.js:210:13)
at rimrafSync (D:\puppeteer\node_modules\rimraf\rimraf.js:310:28)
at D:\puppeteer\node_modules\rimraf\rimraf.js:341:5
at Array.forEach (native)
at rmkidsSync (D:\puppeteer\node_modules\rimraf\rimraf.js:340:26)
at rmdirSync (D:\puppeteer\node_modules\rimraf\rimraf.js:333:7)
at fixWinEPERMSync (D:\puppeteer\node_modules\rimraf\rimraf.js:208:5)
at rimrafSync (D:\puppeteer\node_modules\rimraf\rimraf.js:310:28)
at ChildProcess.chromeProcess.on (D:\puppeteer\node_modules\puppeteer\lib\Launcher.js:87:7)
+1
同样的问题,Windows 10,节点v8.4.0,puppeteer 0.9.0
所有人:请您检查一下树梢木偶是否为您工作? 进行了一些更改可能会解决此问题。
Windows 7 x64,Node .js 8.4.0。
使用树梢木偶和README.md
示例代码,现在我始终得到此错误:
(node:1040) UnhandledPromiseRejectionWarning:
Unhandled promise rejection (rejection id: 1):
Error: EPERM: operation not permitted,
unlink 'c:\Windows\Temp\puppeteer_dev_profile-dgXrpD\CrashpadMetrics-active.pma'
(node:1040) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated.
In the future, promise rejections that are not handled
will terminate the Node.js process with a non-zero exit code.
个人资料文件夹保留在c:\Windows\Temp\
。
每个文件夹包含2个带有锁号的文件(仅限系统和管理员访问):
DevToolsActivePort
CrashpadMetrics-active.pma
从最新版本安装时,我没有任何问题。 警告:我使用的设置与发布此问题时的设置完全不同。 当时,我正在将Puppeteer集成到现有项目中,并且几次出现错误之后,由于某种原因,它只是停止了错误。
但是,我想对此更新进行测试。 我认为创建一个新项目是测试此项目的最简单方法。 我创建了一个新项目。 我安装了yarn add puppeteer@latest
。 我运行了一个包含自述示例的index.js文件,每次执行该命令后,一切工作都很好。 所以...也许是固定的? 就像我说的,这是与以前不同的设置,因此这不是一个非常科学的实验。
FWIW:
'use strict';
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
try { await browser.close(); } catch (err) { console.log(err); }
})();
{ Error: EPERM: operation not permitted,
unlink 'c:\Windows\Temp\puppeteer_dev_profile-BzkIJu\CrashpadMetrics-active.pma'
at Object.fs.unlinkSync (fs.js:1067:18)
at fixWinEPERMSync (...\node_modules\rimraf\rimraf.js:210:13)
at rimrafSync (...\node_modules\rimraf\rimraf.js:310:28)
at ...\node_modules\rimraf\rimraf.js:341:5
at Array.forEach (<anonymous>)
at rmkidsSync (...\node_modules\rimraf\rimraf.js:340:26)
at rmdirSync (...\node_modules\rimraf\rimraf.js:333:7)
at fixWinEPERMSync (...\node_modules\rimraf\rimraf.js:208:5)
at rimrafSync (...\node_modules\rimraf\rimraf.js:310:28)
at killChromeAndCleanup (...\node_modules\puppeteer\lib\Launcher.js:103:7)
errno: -4048,
code: 'EPERM',
syscall: 'unlink',
path: 'c:\\Windows\\Temp\\puppeteer_dev_profile-BzkIJu\\CrashpadMetrics-active.pma' }
我在CrashpadMetrics-active.pma上遇到相同的取消链接错误。
Windows 7 Pro计算机,从昨天开始全新安装了Node 8.4.0和puppeteer 0.9.0。
在https://github.com/GoogleChrome/puppeteer/commit/ac109dba6ddaa62a32fe920e864238d41bf22251之后,似乎对我来说已修复(Windows 7 x64)
是的,现在应该修复。
使用木偶戏者默认铬滴注时,我遇到了同样的问题,但我通过使用铬代替了铬来解决了
我正在使用puppeteer提取数据并将其推送到db中,因为数据更多了,我细分了数据并在不同的计算机上运行了多个实例,但随后却遇到了相同的错误。 请帮助@aslushnikov
+1
仅在使用无头false时在puppeteer 5.2.1,节点v12.14.0,windows7上+1
我有一个解决方案,您必须在关闭浏览器之前关闭页面。 当然,如果您打开了更多页面,请关闭所有页面。
await page.close();
await browser.close();
我一直在关闭页面,但是这个问题仅出现在Windows中,所以我使用ubuntu,一切顺利
遇到同样的问题...谁能帮忙看看? 谢谢!
+1无头true / false,等待关闭浏览器没有影响。 Windows 10,节点13.10.0,puppeteer v5.2.1
我只遇到过一次相同的问题,在胜利10,操纵p 4.0.1上似乎是随机的,我认为应该重新打开此错误。
对我来说同样的问题! Windows 10,puppeteer v5.2.1。
同样的问题,无头运行时没有问题。
一样,在Windows 10上发生错误
同样在这里
这里同样的问题。
[错误:EPERM:不允许该操作,请取消链接'C:\ Users \ xxxxxx \ AppData \ Local \ Temp \ 1 \ puppeteer_dev_chrome_profile-sj0wiy \ CrashpadMetrics-active.pma'] {
errno:-4048,
代码:“ EPERM”,
syscall:'unlink',
路径:'C:\ Users \ xxxxxxx \ AppData \ Local \ Temp \ 1 \ puppeteer_dev_chrome_profile-sj0wiy \ CrashpadMetrics-active.pma'
}
有人可以向开发团队提出问题吗?
关于这个问题有什么消息吗?
我们仍然可以通过5.2.1获得
在5.3.1上也看到了这一点
我也在5.3.1上得到了这个。
请重新打开此问题。 还在发生。
我有一个解决方案,您必须在关闭浏览器之前关闭页面。 当然,如果您打开了更多页面,请关闭所有页面。
await page.close(); await browser.close();
await browser.close()
遇到了问题,但是感谢@ ivangergo3的回答,添加了几行内容来关闭所有页面,从而摆脱了崩溃错误! 😄
let pages = await browser.pages()
await Promise.all(pages.map(page =>page.close()))
await browser.close()
编辑12/17/2020
let pages = await browser.pages() await Promise.all(pages.map(page =>page.close()) await browser.close()
让页面=等待browser.pages()
await Promise.all(pages.map(page => page.close()))//上面的代码中缺少一个右括号
等待browser.close()
我关闭浏览器之前先关闭所有页面,但仍然看到此问题。 还有其他人吗?
我对铬的倍数开和关有相同的问题,我认为这是并发的
我最终以browser.process().kill('SIGKILL');
而不是await browser.close();
方式以某种丑陋的方式修复了该问题,此问题再也没有发生。 有什么缺点吗?
是的,缺点是它没有在api中记录,它是
解决方法不是解决方案。 木偶开发团队应该推动修复程序。 谢谢
无论如何要通知:-)
2020年12月18日星期五,06:03 caihongxu [email protected]写道:
我最终通过某种方式来修复它
browser.process()。kill('SIGKILL'); 而不是等待browser.close(); 和
问题再也没有发生。 有什么缺点吗?-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/puppeteer/puppeteer/issues/298#issuecomment-747869465 ,
或退订
https://github.com/notifications/unsubscribe-auth/ACLIE5B26YARSKBV22ZNKATSVLPBJANCNFSM4DXFG7VQ
。
最有用的评论
await browser.close()
遇到了问题,但是感谢@ ivangergo3的回答,添加了几行内容来关闭所有页面,从而摆脱了崩溃错误! 😄编辑12/17/2020