Пробуем запустить следующий код:
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]
Предполагая: вы могли случайно запустить скрипт дважды, и два параллельных кукловода пытались запустить Chrome с одной и той же папкой профиля - .dev_profile1
.
Мы должны генерировать имена папок профиля случайным образом, чтобы параллельные прогоны кукловода работали нормально.
Возможно! Это кажется маловероятным, поскольку я запускал узел через интерфейс командной строки и не делал ничего другого, кроме первоначальной установки headless : false
поскольку я хотел увидеть браузер. Он воспроизводился каждый раз, пока не установил DEBUG
, после чего все начало работать отлично.
+1
Привет,
Я только что использовал только с кукольником, но все равно получил ту же ошибку. Я использовал первый пример скрипта 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, node v7.10.0, puppeteer 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, кукловод 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, содержащий пример readme, и все работало нормально каждый раз, когда я его выполнял. Так ... может быть, это исправлено? Как я уже сказал, это была установка, отличная от той, что была у меня раньше, так что это не совсем научный эксперимент.
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.
Кажется, это исправлено для меня (Windows 7 x64) после https://github.com/GoogleChrome/puppeteer/commit/ac109dba6ddaa62a32fe920e864238d41bf22251
Да, это нужно исправить сейчас.
У меня такая же проблема с закапыванием хрома по умолчанию с кукловодом, но я решил, используя хром вместо хрома.
Я использую кукловод для извлечения данных и вставки их в базу данных, поскольку данные больше, я разделил данные и запустил несколько экземпляров на разных компьютерах, но затем я получаю ту же ошибку. Помогите пожалуйста @aslushnikov
+1
+1 на кукольнике 5.2.1, узле v12.14.0, windows7 только при использовании безголового false
У меня есть решение, вы должны закрыть страницу перед закрытием браузера. Конечно, если у вас открыто больше страниц, закройте их все.
await page.close();
await browser.close();
Я закрываю страницу, но эта проблема появляется только в окнах, поэтому я использовал ubuntu, и все прошло гладко
Имея ту же проблему ... может ли кто-нибудь помочь взглянуть? Благодаря!
+1 безголовый истина / ложь, и ожидание закрытия браузера не имело значения. Windows 10, узел 13.10.0, кукловод v5.2.1
Однажды у меня была такая же проблема, похоже, она случайна при победе 10, кукловод 4.0.1, я думаю, что эту ошибку следует открыть повторно
У меня такая же проблема! Windows 10, кукольник v5.2.1.
Та же проблема, никаких проблем при работе без головы.
То же самое, ошибка возникает в Windows 10
То же самое здесь
Та же проблема здесь.
[Ошибка: EPERM: операция не разрешена, отключите 'C: \ Users \ xxxxxx \ AppData \ Local \ Temp \ 1 \ puppeteer_dev_chrome_profile-sj0wiy \ CrashpadMetrics-active.pma'] {
номер ошибки: -4048,
код: 'EPERM',
системный вызов: 'отсоединить',
путь: '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()
Изменить 17.12.2020
let pages = await browser.pages() await Promise.all(pages.map(page =>page.close()) await browser.close()
let pages = ждать browser.pages ()
await Promise.all (pages.map (page => page.close ())) // одна закрывающая скобка отсутствует в приведенном выше коде
ждать browser.close ()
Я закрываю все страницы перед закрытием браузера, но проблема все еще возникает. Кто-нибудь еще такой же?
У меня такая же проблема с несколькими открытыми и закрытыми хромами, я думаю, что это совпадение
Я закончил тем, что исправил это несколько уродливым способом, выполнив browser.process().kill('SIGKILL');
вместо await browser.close();
И проблема больше никогда не повторялась. Есть ли у этого недостатки?
Да, недостаток в том, что это не задокументировано в API, и это
обходной путь не решение. Команда разработчиков кукловода должна внести исправление. благодаря
в любом случае для уведомления :-)
Пт, 18 декабря 2020 г., 06:03 caihongxu [email protected] написал:
В итоге я исправил это несколько уродливым способом, выполнив
browser.process (). kill ('СИГКИЛЛ'); вместо await browser.close (); И
проблема больше никогда не повторялась. Есть ли у этого недостатки?-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/puppeteer/puppeteer/issues/298#issuecomment-747869465 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/ACLIE5B26YARSKBV22ZNKATSVLPBJANCNFSM4DXFG7VQ
.
Самый полезный комментарий
Возникла проблема с
await browser.close()
но благодаря ответу @ ivangergo3 добавление пары строк для закрытия всех страниц избавляет от ошибки сбоя! 😄Изменить 17.12.2020