سلام خسته نباشید بعد از برسی های مختلف برای اسکرین شات از صفحه با html2canva مواجه شدم که به طور کامل css ها رو اعمال نمی کرد و خیلی بد بود.
دوباره برسی کردم و با پکیج puppeteer آشنا شدم که مربوط به nodejs هست اون رو نصب کردم کد های خودم رو به شرح زیر نوشتم:
import puppeteer from 'puppeteer';
import path from 'path';
(async () => {
console.log('1');
console.log(process.argv[1]);
const path = new URL('.', import.meta.url).pathname;
const browser = await puppeteer.launch({
ignoreDefaultArgs: ['--disable-extensions'],
});
console.log('2');
const page = await browser.newPage();
await page.goto('http://127.0.0.1:8000/tracking/' + process.argv[2] + '?purchase=true',{ timeout: 60000 }); // آدرس صفحه HTML
await page.waitForSelector('html'); // انتظار برای بارگذاری دیو
const element = await page.$('html');
await element.screenshot({path: 'screenshot.png'}); // اسکرینشات گرفته شده را ذخیره میکند
console.log('Screenshot taken');
await browser.close();
})();
خوب در نهایت با استفاده از دستور node app.js
پروژه کاملا درست کار می کرد.
خوب حالا باید میرفتم توی laravel که از app.js استفاده کنم ضمناً من از lumen استفاده می کنم.
$cwd = 'G:\software\nodejs';
$process = new Process(['node', $js, $id], $cwd, input: 'OK');
$process->start();
foreach ($process as $type => $data) {
if ($process::OUT === $type) {
echo "\nRead from stdout: " . $data . "<br>";
} else { // $process::ERR === $type
echo "\nRead from stderr: " . $data . '<br>';
}
}
کد مربوطه رو نوشتم و رفتم خروجی رو ببینم ارور های متنوعی خوردم و آخرین اروری که خوردم و برطرف نشد ارور :
Read from stderr: node:internal/process/promises:289 triggerUncaughtException(err, true /* fromPromise */); ^ [Error: ENOENT: no such file or directory, mkdtemp 'undefined\temp\puppeteer_dev_chrome_profile-XXXXXX'] { errno: -4058, code: 'ENOENT', syscall: 'mkdtemp', path: 'undefined\\temp\\puppeteer_dev_chrome_profile-XXXXXX' } Node.js v20.11.1
دلیلش رو اگر کسی محبت کنه بگه که چطوری برطرفش کنم ممنون میشم.
@hesammousavi
به علی کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟