λ€μ μ½λλ₯Ό μ€ννλ €κ³ ν©λλ€.
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]
μΆμΈ‘ : μ€μλ‘ μ€ν¬λ¦½νΈλ₯Ό λ λ² μμνμ μ μμΌλ©° λ λͺ
μ λ³λ ¬ μΈνκ·Ήμ΄ λμΌν νλ‘ν ν΄λ ( .dev_profile1
ν¬λ‘¬μ μ€ννλ €κ³ νμ΅λλ€.
puppeteerμ λ³λ ¬ μ€νμ΄ μ λλ‘ μλνλλ‘ νλ‘ν ν΄λ μ΄λ¦μ 무μμλ‘ μμ±ν΄μΌν©λλ€.
μμ μμλ€! CLIλ₯Ό ν΅ν΄ λ
Έλλ₯Ό μμνκ³ λΈλΌμ°μ λ₯Όλ³΄κ³ μΆμ κΈ° λλ¬Έμ μλ 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)
λ₯Ό νΈμΆνλ κ²λ§μΌλ‘λ λ¬Έμ κ°μλ κ²μΌλ‘ λνλ¬μ΅λλ€. puppeteerλ μκΈ°μΉ μμ λΆλͺ¨ νλ‘μΈμ€ μ’
λ£μ κ²½μ°μλ μμλ Chromium μμ νλ‘μΈμ€λ₯Ό μ 리νλ λ° λ§€μ° μ’μ κ² κ°μ΅λλ€. κ·Έλμ λλ¨ν©λλ€!
μ²μ λͺ λ² μ¬μ© λ°λͺ¨λ₯Ό μ€ννμ§λ§ λ§€λ² νμΈνμ§λ λͺ»νμ΅λλ€. μ½ 10 λΆ νμ μ€ν¬λ¦½νΈ μ€ν μ€λ₯λ³΄λ€ ν¨μ¬ λ λ§μ μ±κ³΅μ 보κ²λ©λλ€. κ·Έκ²μ΄ λμμ΄λλμ§ μλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€.
κ°μ λ¬Έμ , 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, node v8.4.0, puppeteer 0.9.0
λͺ¨λ : λ무 λ ββμΈνμ΄ λΉμ μ μν΄ μΌνλμ§ νμΈν΄ μ£Όμκ² μ΅λκΉ? μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μμλ λͺ κ°μ§ λ³κ²½ μ¬νμ΄ μμ΅λλ€.
Windows 7 x64, Node .js 8.4.0.
README.md
μ tip-of-tree puppeteer λ° μμ μ½λλ₯Ό μ¬μ©νλ©΄ μ΄μ μΌκ΄λκ² λ€μ μ€λ₯κ° λ°μν©λλ€.
(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 κ°μ νμΌμ΄ μμ΅λλ€ (μμ€ν λ° κ΄λ¦¬μ λ§ μ‘μΈμ€) :
CrashpadMetrics-active.pma
μ΅μ λ²μ μμ μ€μΉν λ λ¬Έμ κ° μμμ΅λλ€. μ£Όμ μ¬ν :μ΄ λ¬Έμ μ λν΄ κ²μνμ λμλ λ§€μ° λ€λ₯Έ μ€μ μ μ¬μ©νμ΅λλ€. κ·Έ λΉμ μ λ Puppeteerλ₯Ό κΈ°μ‘΄ νλ‘μ νΈμ ν΅ν©νκ³ μμλλ° λͺ λ² μ€λ₯κ° λ°μν ν μ΄λ€ μ΄μ λ‘ μ€λ₯κ° μ€μ§λμμ΅λλ€.
κ·Έλ¬λμ΄ μ
λ°μ΄νΈλ₯Ό ν
μ€νΈνκ³ μΆμμ΅λλ€. μ νλ‘μ νΈλ₯Ό λ§λλ κ²μ΄ μ΄κ²μ ν
μ€νΈνλ κ°μ₯ μ¬μ΄ λ°©λ²μ΄λΌκ³ μκ°νμ΅λλ€. μ νλ‘μ νΈλ₯Ό λ§λ€μμ΅λλ€. yarn add puppeteer@latest
. readme μμ κ° ν¬ν¨ λ 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μμ λμΌν μ°κ²° ν΄μ μ€λ₯κ° λ°μν©λλ€.
μ΄μ λΆν° Node 8.4.0 λ° puppeteer 0.9.0μ μλ‘ μ€μΉ ν Windows 7 Pro μ»΄ν¨ν°.
https://github.com/GoogleChrome/puppeteer/commit/ac109dba6ddaa62a32fe920e864238d41bf22251 μ΄ν λλ₯Ό μν΄ μμ λ κ² κ°μ΅λλ€ (Windows 7 x64)
μ, μ§κΈ μμ ν΄μΌν©λλ€.
μΈνμ μ‘°μ’ νλ κΈ°λ³Έ ν¬λ‘¬ μ£Όμ κ³Ό λμΌν λ¬Έμ κ° λ°μνμ§λ§ ν¬λ‘¬ λμ ν¬λ‘¬μ μ¬μ©νμ¬ ν΄κ²°νμ΅λλ€.
λ°μ΄ν°λ₯Ό λ μΈλΆννκ³ λ€λ₯Έ μ»΄ν¨ν°μμ μ¬λ¬ μΈμ€ν΄μ€λ₯Ό μ€ννκΈ° λλ¬Έμ λ°μ΄ν°λ₯Ό μΆμΆνκ³ dbλ‘ νΈμνκΈ° μν΄ puppeteerλ₯Ό μ¬μ©νκ³ μμ§λ§ λμΌν μ€λ₯κ° λ°μν©λλ€. @aslushnikovλ₯Ό λμ
+1
puppeteer 5.2.1, λ Έλ v12.14.0, windows7μμ ν€λλ¦¬μ€ falseλ₯Ό μ¬μ©νλ κ²½μ°μλ§ +1
ν΄κ²°μ±
μ΄ μμ΅λλ€. λΈλΌμ°μ λ₯Ό λ«κΈ° μ μ νμ΄μ§λ₯Ό λ«μμΌν©λλ€. λ¬Όλ‘ λ λ§μ νμ΄μ§κ° μ΄λ € μμΌλ©΄ λͺ¨λ λ«μΌμμμ€.
await page.close();
await browser.close();
νμ΄μ§λ₯Ό λ«μλλ°μ΄ λ¬Έμ λ μ°½μλ§ λνλμ μ°λΆν¬λ₯Ό μ¬μ©νκ³ λͺ¨λ κ²μ΄ μμ‘°λ‘κ² μ§νλμμ΅λλ€
κ°μ λ¬Έμ κ° μμ΅λλ€ ... λꡬλ μ§ μ΄ν΄λ³Ό μ μμ΅λκΉ? κ°μ¬!
+1 ν€λλ¦¬μ€ μ°Έ / κ±°μ§, λΈλΌμ°μ λ₯Ό λ«μλ μλ¬΄λ° μ°¨μ΄κ° μμ΅λλ€. Windows 10, λ Έλ 13.10.0, puppeteer v5.2.1
λ°©κΈ κ°μ λ¬Έμ κ° λ°μνμ΅λλ€. win 10, puppeteer 4.0.1μμ 무μμλ‘ λνλλ κ² κ°μ΅λλ€.μ΄ λ²κ·Έλ₯Ό λ€μ μ΄μ΄μΌνλ€κ³ μκ°ν©λλ€.
λμκ²λ κ°μ λ¬Έμ ! Windows 10, puppeteer v5.2.1.
κ°μ λ¬Έμ , ν€λ리μ€λ‘ μ€νν λ λ¬Έμ κ° μμ΅λλ€.
λμΌ, Windows 10μμ μ€λ₯κ° λ°μν©λλ€.
μ¬κΈ°λ λκ°μ
μ¬κΈ°μλ κ°μ λ¬Έμ κ° μμ΅λλ€.
[μ€λ₯ : EPERM : μμ
μ΄ νμ©λμ§ μμ, 'C : UsersxxxxxxAppDataLocalTemp1puppeteer_dev_chrome_profile-sj0wiyCrashpadMetrics-active.pma'μ°κ²° ν΄μ '] {
μ€λ₯ λ²νΈ : -4048,
μ½λ : 'EPERM',
syscall : 'μ°κ²° ν΄μ ',
κ²½λ‘ : '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()
2020 λ 12 μ 17 μΌ μμ
let pages = await browser.pages() await Promise.all(pages.map(page =>page.close()) await browser.close()
let pages = await browser.pages ()
await Promise.all (pages.map (page => page.close ())) // μ μ½λμ λ«λ κ΄νΈ νλκ° μμ΅λλ€.
await browser.close ()
λΈλΌμ°μ λ₯Ό λ«κΈ° μ μ λͺ¨λ νμ΄μ§λ₯Ό λ«κ³ μμ§λ§ μ¬μ νμ΄ λ¬Έμ κ° λνλ©λλ€. λ€λ₯Έ μ¬λλ λκ°μ΅λκΉ?
μ¬λ¬ κ°μ μ΄λ¦Ό λ° λ«ν ν¬λ‘¬μ λμΌν λ¬Έμ κ° μμ΅λλ€. λμλΌκ³ μκ°ν©λλ€.
λλ μννμ¬ λ€μ μΆν λ°©λ²μΌλ‘ κ³ μ κ²°κ΅ browser.process().kill('SIGKILL');
λμ await browser.close();
κ·Έλ¦¬κ³ λ¬Έμ λ λ€μ μλμ€λνμ§ μμ΅λλ€. μ΄κ²μ λ¨μ μ΄ μμ΅λκΉ?
μ, λ¨μ μ APIμ λ¬Έμνλμ΄ μμ§ μκ³
ν΄κ²°μ±
μ΄ μλλλ€. κΌλκ°μ κ°λ°νμ΄ μμ μν΄μΌν©λλ€. κ°μ¬
μ΄μ¨λ ν΅μ§λ₯Ό μν΄ :-)
2020 λ 12 μ 18 μΌ κΈμμΌ 06:03 caihongxu [email protected] μμ± :
λλ κ·Έκ²μ μνν¨μΌλ‘μ¨ λ€μ μΆμ ν λ°©μμΌλ‘ μμ νμ΅λλ€.
browser.process (). kill ( 'SIGKILL'); await λμ browser.close (); κ³Ό
λ¬Έμ λ λ€μλ λ°μνμ§ μμμ΅λλ€. μ΄κ²μ λ¨μ μ΄ μμ΅λκΉ?β
λκΈμ λ¬μ κΈ° λλ¬Έμ μμ ν κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/puppeteer/puppeteer/issues/298#issuecomment-747869465 ,
λλ ꡬλ μ·¨μ
https://github.com/notifications/unsubscribe-auth/ACLIE5B26YARSKBV22ZNKATSVLPBJANCNFSM4DXFG7VQ
.
κ°μ₯ μ μ©ν λκΈ
await browser.close()
λ¬Έμ κ° μμμ§λ§ @ ivangergo3 μ λ΅λ³ λλΆμ λͺ¨λ νμ΄μ§λ₯Ό λ«λ λͺ μ€μ μΆκ°νλ©΄ μΆ©λ μ€λ₯κ° μ κ±°λ©λλ€! π2020 λ 12 μ 17 μΌ μμ