تايبسكريبت - دينو بوبتيير 'كروم غير موجود' عند محاولة استيراد تبعية npm


أحاول استخدام node-html-to-image في دينو:

import nodeHtmlToImage from "npm:node-html-to-image";

nodeHtmlToImage({
  output: './image.png',
  html: '<html><body>Hello world!</body></html>'
})
  .then(() => console.log('The image was created successfully!'))

deno run --allow-env --allow-read --allow-write that-file.ts يسبب هذا الخطأ:

error: Uncaught Error: Unable to launch browser, error message: Could not find expected browser (chrome) locally. Run `npm install` to download the correct Chromium revision (982053).
    at Cluster.<anonymous> (file:///Users/theonlygusti/Library/Caches/deno/npm/registry.npmjs.org/puppeteer-cluster/0.23.0/dist/Cluster.js:119:23)
    at Generator.throw (<anonymous>)
    at rejected (file:///Users/theonlygusti/Library/Caches/deno/npm/registry.npmjs.org/puppeteer-cluster/0.23.0/dist/Cluster.js:6:65)

كيف يمكنني استخدام حزمة npm node-html-to-image من Deno؟

الإجابة رقم 1

بشكل أساسي، تم الإجابة على هذا في لم يتم العثور على متصفح كروم المتوقع محليًا.

الجزء الخاص بـ Deno هو أن دليل تثبيت NPM يختلف عن تثبيتات Node المعتادة.

عندما تستخدم محدد npm في Deno، على سبيل المثال import nodeHtmlToImage from "npm:node-html-to-image";، سيتم تثبيت حزم Node في جزء من دليل ذاكرات التخزين المؤقت في Deno:

  • ويندوز: <دليل المستخدم>/AppData/Local/deno/npm/registry.npmjs.org/
  • ماك أو إس: ~/Library/Caches/deno/npm/registry.npmjs.org
  • لينكس: $XDG_CACHE_HOME/deno/npm/registry.npmjs.org أو $HOME/.cache/deno/npm/registry.npmjs.org

وبشكل محدد لـ Puppeteer: deno/npm/registry.npmjs.org/puppeteer/13.7.0

في رسالة الخطأ يُذكر أن

قم بتشغيل npm install لتنزيل نسخة Chromium الصحيحة (982053)

هذا يعني أنه يجب عليك تشغيل npm install في دليل Puppeteer أعلاه، الذي يحتوي على ملف باسم install.js.

سيقوم هذا بتثبيت النسخة الصحيحة من حزمة كروميوم في دليل Puppeteer تحت .local-chromium.

الخبر السيء هو (على الأقل تحت نظام ويندوز)، أنك على الأرجح ستحصل على الخطأ التالي، وهو

خطأ غير ملتقط: غير قادر على تشغيل المتصفح، رسالة الخطأ: نظام ويندوز يدعم فقط ctrl-c (SIGINT) و ctrl-break (SIGBREAK).