Как исправить ошибку «нет такого файла или каталога» в Puppeteer - PullRequest
1 голос
/ 04 июля 2019

Я выполнил код следующей страницы. Но произошла ошибка.
Я пытался изменить код, но ни одна ошибка такого файла или каталога не может быть исправлена, и она не сработала.


https://www.npmjs.com/package/puppeteer-to-istanbul

Ошибка по исходному коду

(node:18592) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open 'C:\Users\username\Desktop\.nyc_output\js\m=WgDvvc,aa,abd,async,dvl,fEVMic,foot,lu,m,mUpTid,mu,sb_wiz,sf,spch,xz7cCd?xjs=s1.js'
    at Object.openSync (fs.js:443:3)
    at Object.writeFileSync (fs.js:1194:35)
    at OutputFiles._parseAndIsolate (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\output-files.js:52:10)
    at new OutputFiles (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\output-files.js:18:10)
    at module.exports (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\output-files.js:62:10)
    at new PuppeteerToIstanbul (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\puppeteer-to-istanbul.js:10:33)
    at module.exports (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\puppeteer-to-istanbul.js:37:10)
    at Object.write (C:\Users\username\node_modules\puppeteer-to-istanbul\index.js:5:17)
    at C:\Users\username\Desktop\original.js:19:7
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:18592) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:18592) [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.



Код, добавивший .catch () к исходному коду

(async () => {
  const pti = require('puppeteer-to-istanbul')
  const puppeteer = require('puppeteer')
  const browser = await puppeteer.launch()
  const page = await browser.newPage()

  // Enable both JavaScript and CSS coverage
  await Promise.all([
    page.coverage.startJSCoverage(),
    page.coverage.startCSSCoverage()
  ]);
  // Navigate to page
  await page.goto('https://www.google.com');
  // Disable both JavaScript and CSS coverage
  const [jsCoverage, cssCoverage] = await Promise.all([
    page.coverage.stopJSCoverage(),
    page.coverage.stopCSSCoverage(),
  ]);
  pti.write(jsCoverage)
  await browser.close()
})().catch(e => console.error(e))

Ошибка по коду, добавившему .catch ()

{ Error: ENOENT: no such file or directory, open 'C:\Users\username\Desktop\.nyc_output\js\m=WgDvvc,aa,abd,async,dvl,fEVMic,foot,lu,m,mUpTid,mu,sb_wiz,sf,spch,xz7cCd?xjs=s1.js'
    at Object.openSync (fs.js:443:3)
    at Object.writeFileSync (fs.js:1194:35)
    at OutputFiles._parseAndIsolate (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\output-files.js:52:10)
    at new OutputFiles (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\output-files.js:18:10)
    at module.exports (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\output-files.js:62:10)
    at new PuppeteerToIstanbul (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\puppeteer-to-istanbul.js:10:33)
    at module.exports (C:\Users\username\node_modules\puppeteer-to-istanbul\lib\puppeteer-to-istanbul.js:37:10)
    at Object.write (C:\Users\username\node_modules\puppeteer-to-istanbul\index.js:5:17)
    at C:\Users\username\Desktop\original_add_catch.js:19:7
    at process._tickCallback (internal/process/next_tick.js:68:7)
  errno: -4058,
  syscall: 'open',
  code: 'ENOENT',
  path:
   'C:\\Users\\username\\Desktop\\.nyc_output\\js\\m=WgDvvc,aa,abd,async,dvl,fEVMic,foot,lu,m,mUpTid,mu,sb_wiz,sf,spch,xz7cCd?xjs=s1.js' }



Будет работать следующий код.

(async () => {
  const pti = require('puppeteer-to-istanbul')
  const puppeteer = require('puppeteer')
  const browser = await puppeteer.launch()
  const page = await browser.newPage()

  // Enable both JavaScript and CSS coverage
  await page.coverage.startCSSCoverage()
  // Navigate to page
  await page.goto('https://www.google.com/');
  // Disable both JavaScript and CSS coverage
  const cssCoverage = await page.coverage.stopCSSCoverage();
  pti.write(cssCoverage)
  await browser.close()
})()



Окружающая среда

  • Windows10
  • node.js v10.16.0
...