Puppeteer: EPERM error saat mencoba menjalankan contoh

Dibuat pada 16 Agu 2017  ·  42Komentar  ·  Sumber: puppeteer/puppeteer

Mencoba menjalankan kode berikut:

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();
});

Saya mendapat kesalahan:

Error: EPERM: operation not permitted, unlink 'C:\Users\tivac\Desktop\puppeteer-testing\node_modules\puppeteer\.dev_profile1\CrashpadMetrics-active.pma'

Dalam proses debugging, set ini DEBUG=* untuk mencoba dan memahami di mana hal-hal gagal, tetapi setelah melakukan itu kemudian berfungsi dengan baik. 😕

Apakah pengalaman pertama kali tidak berfungsi dengan benar dalam mode non- DEBUG ? Saya tidak yakin, tapi itulah yang terjadi pada saya!

bug host

Komentar yang paling membantu

Saya punya solusi, Anda harus menutup halaman sebelum menutup browser. Tentu saja jika Anda memiliki lebih banyak halaman yang terbuka, tutup semuanya.
await page.close(); await browser.close();

Mengalami masalah dengan await browser.close() tetapi berkat jawaban @ ivangergo3 , menambahkan beberapa baris untuk menutup semua halaman akan menghilangkan error crash! 😄

let pages = await browser.pages()
await Promise.all(pages.map(page =>page.close()))
await browser.close()

Sunting 17/12/2020

  • memperbaiki tanda kurung yang hilang yang disebutkan di bawah ini

Semua 42 komentar

Berspekulasi: Anda mungkin tidak sengaja meluncurkan skrip dua kali, dan dua dalang paralel mencoba menjalankan chrome dengan folder profil yang sama - .dev_profile1 .

Kita harus membuat nama folder profil secara acak sehingga paralel dalang berfungsi dengan baik.

Itu mungkin! Sepertinya tidak mungkin karena saya meluncurkan node melalui CLI dan tidak melakukan sesuatu yang berbeda selain pengaturan awal headless : false karena saya ingin melihat browser. Ini akan di-repro setiap kali sampai pengaturan DEBUG , di mana semuanya mulai bekerja dengan sempurna.

+1

Hai,
Saya baru saja digunakan dengan dalang saja, tetapi masih mendapatkan kesalahan yang sama. Saya menggunakan https://github.com/GoogleChrome/puppeteer/#usage contoh script pertama.

Saya telah mengalami masalah ini juga, meskipun dengan contoh skrip yang lebih sederhana yang baru saja meluncurkan browser dan kemudian segera mencoba menutupnya:

const puppeteer = require('puppeteer');

(async () => {
  console.log("Launching browser.");

  const browser = await puppeteer.launch();

  console.log("Closing browser.");

  browser.close();
})();

Saya telah mencoba menghapus direktori node_modules/puppeteer/.dev_profile1 secara manual sebelum menjalankan skrip ini, dan kesalahan masih terjadi.

Sebagai solusinya, saya telah menemukan bahwa hanya menelepon process.exit(0) ketika saya selesai berfungsi dengan baik - dalang tampaknya sangat baik dalam membersihkan setiap proses anak Chromium yang diluncurkan bahkan dalam kasus penghentian proses induk yang tidak terduga, jadi itu bagus!

Saya melihat ini beberapa kali pertama saya menjalankan demo penggunaan, tetapi saya tidak mendapatkannya setiap saat. Sekitar sepuluh menit kemudian, saya melihat lebih banyak keberhasilan daripada kesalahan dalam menjalankan skrip. Saya tidak yakin apakah itu membantu atau tidak.

masalah yang sama, windows 10, node v7.10.0, puppeteer 1.0.0. pengaturan DEBUG = * tidak membantu, coba jalankan sebagai admin

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

masalah yang sama, windows 10, node v8.4.0, puppeteer 0.9.0

Semua orang: dapatkah Anda memeriksa apakah dalang tip-of-tree bekerja untuk Anda? Ada beberapa perubahan yang mungkin mengatasi hal ini.

Windows 7 x64, Node .js 8.4.0.
Dengan dalang tip-of-tree dan kode contoh dari README.md , sekarang saya secara konsisten mendapatkan kesalahan ini:

(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.

Folder profil tetap berada di c:\Windows\Temp\ .

Setiap folder berisi 2 file dengan tanda kunci (akses hanya untuk sistem dan admin):

DevToolsActivePort
CrashpadMetrics-active.pma

Saya tidak mengalami masalah apa pun saat menginstal dari yang terbaru. Peringatan: Saya menggunakan pengaturan yang sangat berbeda dari yang saya miliki ketika saya memposting tentang masalah ini. Pada saat itu, saya sedang mengintegrasikan Puppeteer ke dalam proyek yang sudah ada, dan setelah saya mendapatkan kesalahan beberapa kali, kesalahan itu berhenti begitu saja karena suatu alasan.

Namun, saya ingin menguji pembaruan ini. Saya pikir membuat proyek baru adalah cara termudah untuk menguji ini. Saya membuat proyek baru. Saya telah menginstal dengan yarn add puppeteer@latest . Saya menjalankan file index.js yang berisi contoh readme, dan semuanya bekerja dengan baik setiap kali saya menjalankannya. Jadi ... mungkin sudah diperbaiki? Seperti yang saya katakan, ini adalah pengaturan yang berbeda dari yang saya miliki sebelumnya, jadi ini bukan eksperimen yang terlalu ilmiah.

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' }

Saya mendapatkan kesalahan pembatalan tautan yang sama di CrashpadMetrics-active.pma.

Mesin Windows 7 Pro dengan penginstalan baru Node 8.4.0 dan dalang 0.9.0 dari kemarin.

Tampaknya telah diperbaiki untuk saya (Windows 7 x64) setelah https://github.com/GoogleChrome/puppeteer/commit/ac109dba6ddaa62a32fe920e864238d41bf22251

Ya, harus diperbaiki sekarang.

Saya mendapat masalah yang sama dengan penanaman kromium default dengan dalang tetapi saya menyelesaikannya dengan menggunakan krom alih-alih kromium

Saya menggunakan dalang untuk mengekstrak data dan mendorongnya ke db karena datanya lebih banyak, saya membagi data dan menjalankan beberapa contoh di komputer yang berbeda tetapi kemudian saya mendapatkan kesalahan yang sama. Tolong bantu @aslushnikov

+1

+1 di puppeteer 5.2.1, node v12.14.0, windows7 hanya jika menggunakan headless false

Saya punya solusi, Anda harus menutup halaman sebelum menutup browser. Tentu saja jika Anda memiliki lebih banyak halaman yang terbuka, tutup semuanya.
await page.close(); await browser.close();

Saya telah menutup halaman, tetapi masalah ini hanya muncul di windows jadi saya menggunakan ubuntu dan semuanya berjalan lancar

Memiliki masalah yang sama ... adakah yang bisa membantu untuk melihatnya? Terima kasih!

+1 headless true / false, dan menunggu penutupan browser ada bedanya. Windows 10, node 13.10.0, puppeteer v5.2.1

Saya baru saja mendapat masalah yang sama sekali, sepertinya acak pada win 10, dalang 4.0.1, saya pikir bug ini harus dibuka kembali

Masalah yang sama untuk saya! Windows 10, puppeteer v5.2.1.

Masalah yang sama, tidak ada masalah saat menjalankan tanpa kepala.

Sama, kesalahan terjadi pada windows 10

Sama di sini

Masalah yang sama disini.
[Kesalahan: EPERM: operasi tidak diizinkan, batalkan tautan 'C: \ Users \ xxxxxx \ AppData \ Local \ Temp \ 1 \ puppeteer_dev_chrome_profile-sj0wiy \ CrashpadMetrics-active.pma'] {
errno: -4048,
kode: 'EPERM',
syscall: 'unlink',
jalur: 'C: \ Users \ xxxxxxx \ AppData \ Local \ Temp \ 1 \ puppeteer_dev_chrome_profile-sj0wiy \ CrashpadMetrics-active.pma'
}
Bisakah seseorang membuka masalah dengan tim pengembang?

Ada berita tentang masalah ini?

Kami masih mendapatkan ini dengan 5.2.1

Lihat ini di 5.3.1 juga

Saya mendapatkan ini di 5.3.1 juga.

Tolong, buka kembali masalah ini. Masih terjadi.

Saya punya solusi, Anda harus menutup halaman sebelum menutup browser. Tentu saja jika Anda memiliki lebih banyak halaman yang terbuka, tutup semuanya.
await page.close(); await browser.close();

Mengalami masalah dengan await browser.close() tetapi berkat jawaban @ ivangergo3 , menambahkan beberapa baris untuk menutup semua halaman akan menghilangkan error crash! 😄

let pages = await browser.pages()
await Promise.all(pages.map(page =>page.close()))
await browser.close()

Sunting 17/12/2020

  • memperbaiki tanda kurung yang hilang yang disebutkan di bawah ini
let pages = await browser.pages()
await Promise.all(pages.map(page =>page.close())
await browser.close()

biarkan halaman = menunggu browser.pages ()
await Promise.all (pages.map (page => page.close ())) // satu kurung penutup tidak ada pada kode di atas
menunggu browser.close ()

Saya menutup semua halaman sebelum menutup browser, tetapi masih melihat masalah ini. Ada lagi yang sama?

Saya memiliki masalah yang sama dengan kelipatan buka dan tutup kromium, saya pikir itu bersamaan

Saya akhirnya memperbaikinya dengan cara yang agak jelek dengan melakukan browser.process().kill('SIGKILL'); bukan await browser.close(); Dan masalah tidak pernah terjadi lagi. Ada kekurangan dari ini?

Ya, kekurangannya adalah itu tidak didokumentasikan dalam api dan itu a
solusi bukan solusi. Tim pengembang dalang harus mendorong perbaikan. Terima kasih
toh untuk pemberitahuan :-)

Pada hari Jumat, 18 Des 2020, 06:03 caihongxu [email protected] menulis:

Saya akhirnya memperbaikinya dengan cara yang agak jelek
browser.process (). kill ('SIGKILL'); alih-alih await browser.close (); Dan
masalah tidak pernah terjadi lagi. Ada kekurangan dari ini?

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/puppeteer/puppeteer/issues/298#issuecomment-747869465 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ACLIE5B26YARSKBV22ZNKATSVLPBJANCNFSM4DXFG7VQ
.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat