Кукловод работает правильно на локальном хосте, но не на моем сервере Ubuntu ⇐ Php
Кукловод работает правильно на локальном хосте, но не на моем сервере Ubuntu
У меня есть простой проект на Laravel, в котором вы можете добавить веб-сайт, сделать снимок экрана этого веб-сайта и отобразить весь веб-сайт на главной странице.
Мой скрипт отлично работает на локальном хосте
const puppeteer = require("кукловод"); асинхронная функция takeScreenshot(url, path) { пытаться { console.log("Запуск браузера..."); const браузер = ожидайте puppeteer.launch({ args: ["--no-песочница"], }); console.log("Браузер успешно запущен"); console.log("Открытие новой страницы..."); константная страница = ожидание браузера.newPage(); console.log("Новая страница успешно открыта"); console.log("Настройка области просмотра..."); await page.setViewport({ширина: 1366, высота: 768}); console.log("Область просмотра успешно установлена"); console.log("Переход к URL:", url); await page.goto(url, { waitUntil: "networkidle2" }); console.log("Переход по URL-адресу успешно завершен"); console.log("Сделаю снимок экрана..."); ждут page.screenshot({путь: путь}); console.log("Скриншот сделан успешно"); console.log("Закрытие браузера..."); ожидайте браузер.закрыть(); console.log("Браузер успешно закрыт"); console.log("Снимок экрана сохранен в:", путь); вернуть истину; } поймать (ошибка) { console.error("Ошибка при создании скриншота:", error); вернуть ложь; } } константный URL = процесс.argv[2]; константный путь = процесс.argv[3]; takeScreenshot (url, путь) .then((успех) => { если (успех) { console.log("Снимок экрана сделан", url); } еще { console.error("Не удалось сделать снимок экрана", url); } }) .catch((ошибка) => { console.error("Произошла ошибка:", error); }); и на моем контроллере Laravel это есть
$command = "node $scriptPath $escapedUrl $storagePath"; Log::info("Выполнение команды: $command"); exec($команда, $выход, $returnvar); Log::info("Возвращаемое значение: $returnvar"); Журнал::информация($выход); это результат файлов журналов на моем локальном хосте
[2024-02-28 08:10:49] local.INFO: Выполнение команды: node pathtomyproject\node_scripts/screenshot.js "https://github.com/" pathtomyproject\storage\app/public /screenshots/008ec4453ff31513f43893cba7aa31c8_20240228081049.png [2024-02-28 08:10:52] local.INFO: Возвращаемое значение: 0 [2024-02-28 08:10:52] local.INFO: массив ( 0 => 'Запуск браузера...', 1 => 'Браузер успешно запущен', 2 => 'Открытие новой страницы...', 3 => 'Новая страница открыта успешно', 4 => 'Настройка области просмотра...', 5 => 'Область просмотра установлена успешно', 6 => 'Переход по URL: https://github.com/', 7 => 'Переход по URL завершен успешно', 8 => 'Сделать снимок экрана...', 9 => 'Скриншот сделан успешно', 10 => 'Закрытие браузера...', 11 => 'Браузер успешно закрыт', 12 => 'Снимок экрана сохранен в: pathtomyproject\\storage\\app/public/screenshots/008ec4453ff31513f43893cba7aa31c8_20240228081049.png', 13 => 'Снимок экрана сделан для https://github.com/', ) но на моем сервере, где я развертываю этот проект, вместо этого есть этот журнал
[2024-02-28 08:14:47] local.INFO: Выполнение команды: node /var/www/sitechecker/node_scripts/screenshot.js 'https://github.com/' /var /www/sitechecker/storage/app/public/screenshots/1bab3f16e219f6242b86db0c18e33cfd_20240228081447.png [2024-02-28 08:14:47] local.INFO: Возвращаемое значение: 0 [2024-02-28 08:14:47] local.INFO: массив ( 0 => 'Запуск браузера...', ) Я впервые использую node на своем сервере Ubuntu, поэтому мне трудно найти проблему: это js-файл, или мой проект laravel, или, может быть, мой сервер
Я попробовал перезагрузить сервер, изменив версию узла на v18.17.1 (поскольку это моя версия узла на моем локальном хосте) и вернул ее обратно на 20.11.1, но результат тот же.
по сути, я хочу, чтобы результат журнала моего сервера был таким же на моем локальном хосте
У меня есть простой проект на Laravel, в котором вы можете добавить веб-сайт, сделать снимок экрана этого веб-сайта и отобразить весь веб-сайт на главной странице.
Мой скрипт отлично работает на локальном хосте
const puppeteer = require("кукловод"); асинхронная функция takeScreenshot(url, path) { пытаться { console.log("Запуск браузера..."); const браузер = ожидайте puppeteer.launch({ args: ["--no-песочница"], }); console.log("Браузер успешно запущен"); console.log("Открытие новой страницы..."); константная страница = ожидание браузера.newPage(); console.log("Новая страница успешно открыта"); console.log("Настройка области просмотра..."); await page.setViewport({ширина: 1366, высота: 768}); console.log("Область просмотра успешно установлена"); console.log("Переход к URL:", url); await page.goto(url, { waitUntil: "networkidle2" }); console.log("Переход по URL-адресу успешно завершен"); console.log("Сделаю снимок экрана..."); ждут page.screenshot({путь: путь}); console.log("Скриншот сделан успешно"); console.log("Закрытие браузера..."); ожидайте браузер.закрыть(); console.log("Браузер успешно закрыт"); console.log("Снимок экрана сохранен в:", путь); вернуть истину; } поймать (ошибка) { console.error("Ошибка при создании скриншота:", error); вернуть ложь; } } константный URL = процесс.argv[2]; константный путь = процесс.argv[3]; takeScreenshot (url, путь) .then((успех) => { если (успех) { console.log("Снимок экрана сделан", url); } еще { console.error("Не удалось сделать снимок экрана", url); } }) .catch((ошибка) => { console.error("Произошла ошибка:", error); }); и на моем контроллере Laravel это есть
$command = "node $scriptPath $escapedUrl $storagePath"; Log::info("Выполнение команды: $command"); exec($команда, $выход, $returnvar); Log::info("Возвращаемое значение: $returnvar"); Журнал::информация($выход); это результат файлов журналов на моем локальном хосте
[2024-02-28 08:10:49] local.INFO: Выполнение команды: node pathtomyproject\node_scripts/screenshot.js "https://github.com/" pathtomyproject\storage\app/public /screenshots/008ec4453ff31513f43893cba7aa31c8_20240228081049.png [2024-02-28 08:10:52] local.INFO: Возвращаемое значение: 0 [2024-02-28 08:10:52] local.INFO: массив ( 0 => 'Запуск браузера...', 1 => 'Браузер успешно запущен', 2 => 'Открытие новой страницы...', 3 => 'Новая страница открыта успешно', 4 => 'Настройка области просмотра...', 5 => 'Область просмотра установлена успешно', 6 => 'Переход по URL: https://github.com/', 7 => 'Переход по URL завершен успешно', 8 => 'Сделать снимок экрана...', 9 => 'Скриншот сделан успешно', 10 => 'Закрытие браузера...', 11 => 'Браузер успешно закрыт', 12 => 'Снимок экрана сохранен в: pathtomyproject\\storage\\app/public/screenshots/008ec4453ff31513f43893cba7aa31c8_20240228081049.png', 13 => 'Снимок экрана сделан для https://github.com/', ) но на моем сервере, где я развертываю этот проект, вместо этого есть этот журнал
[2024-02-28 08:14:47] local.INFO: Выполнение команды: node /var/www/sitechecker/node_scripts/screenshot.js 'https://github.com/' /var /www/sitechecker/storage/app/public/screenshots/1bab3f16e219f6242b86db0c18e33cfd_20240228081447.png [2024-02-28 08:14:47] local.INFO: Возвращаемое значение: 0 [2024-02-28 08:14:47] local.INFO: массив ( 0 => 'Запуск браузера...', ) Я впервые использую node на своем сервере Ubuntu, поэтому мне трудно найти проблему: это js-файл, или мой проект laravel, или, может быть, мой сервер
Я попробовал перезагрузить сервер, изменив версию узла на v18.17.1 (поскольку это моя версия узла на моем локальном хосте) и вернул ее обратно на 20.11.1, но результат тот же.
по сути, я хочу, чтобы результат журнала моего сервера был таким же на моем локальном хосте
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение