Вопрос или проблема
Я сталкиваюсь с проблемой при попытке сгенерировать PDF-файлы с использованием Puppeteer на моем сервере Ubuntu. Код, похоже, выполняется без проблем, но я постоянно сталкиваюсь с ошибкой символа поиска
при попытке запустить браузер Chromium.
Вот соответствующее сообщение об ошибке, которое я получаю:
Ошибка: Не удалось запустить процесс браузера!
/root/.cache/puppeteer/chrome/linux-130.0.6723.58/chrome-linux64/chrome: ошибка поиска символа: /root/.cache/puppeteer/chrome/linux-130.0.6723.58/chrome-linux64/chrome: неопределенный символ: snd_device_name_get_hint
Это код для инициализации браузера
browser = await puppeteer.launch({
headless: true,
args: [
'--disable-gpu',
'--disable-features=IsolateOrigins',
'--disable-site-isolation-trials',
'--autoplay-policy=user-gesture-required',
'--disable-background-networking',
'--disable-background-timer-throttling',
'--disable-backgrounding-occluded-windows',
'--disable-breakpad',
'--disable-client-side-phishing-detection',
'--disable-component-update',
'--disable-default-apps',
'--disable-dev-shm-usage',
'--disable-domain-reliability',
'--disable-features=AudioServiceOutOfProcess',
'--disable-hang-monitor',
'--disable-ipc-flooding-protection',
'--disable-notifications',
'--disable-offer-store-unmasked-wallet-cards',
'--disable-popup-blocking',
'--disable-print-preview',
'--disable-prompt-on-repost',
'--disable-renderer-backgrounding',
'--disable-setuid-sandbox',
'--disable-speech-api',
'--disable-sync',
'--hide-scrollbars',
'--ignore-gpu-blacklist',
'--metrics-recording-only',
'--mute-audio',
'--no-default-browser-check',
'--no-first-run',
'--no-pings',
'--no-sandbox',
'--no-zygote',
'--password-store=basic',
'--use-gl=swiftshader',
'--use-mock-keychain',
],
ignoreDefaultArgs: ['--disable-extensions'],
userDataDir: './tmp',
});
- Очистил кеш Puppeteer (
/root/.cache/puppeteer
). - Переустановил Puppeteer.
- Убедился, что все необходимые библиотеки для Chromium установлены (например,
libatk1.0-0
,libasound2
и т.д.). - Проверил наличие конфликтующих версий библиотек и установил правильную версию
libasound2
. - Обновил системные пакеты и перезагрузил сервер.
Несмотря на эти усилия, проблема сохраняется. Я ищу идеи или решения от сообщества. Кто-нибудь сталкивался с аналогичной проблемой или можете ли вы предложить какие-либо дополнительные шаги, которые я мог бы предпринять для ее решения?
Заранее спасибо за вашу помощь!
Ответ или решение
Ошибка Symbol Lookup при запуске Chromium с использованием Puppeteer на Ubuntu Server: Полное руководство по устранению неисправностей
Если вы столкнулись с проблемой при попытке генерировать PDF-документы с помощью Puppeteer на вашем сервере Ubuntu, и получаете сообщение об ошибке symbol lookup error
, это может указывать на наличие несовместимости библиотек или проблемы с их загрузкой. Данная статья направлена на подробный анализ данной проблемы и методы её решения.
1. Обзор проблемы
Ошибка, с которой вы столкнулись:
Error: Failed to launch the browser process!
/root/.cache/puppeteer/chrome/linux-130.0.6723.58/chrome-linux64/chrome: symbol lookup error: /root/.cache/puppeteer/chrome/linux-130.0.6723.58/chrome-linux64/chrome: undefined symbol: snd_device_name_get_hint
указывает на то, что Chromium не может найти ожидаемую символическую функцию, что предполагает проблемы с библиотекой libasound2
, которая отвечает за обработку звука на Linux.
2. Первые шаги по устранению ошибки
Перед тем, как углубляться в сложные решения, убедитесь в следующих аспектах:
-
Очистка кеша Puppeteer: Вы упомянули, что очистили кеш в
/root/.cache/puppeteer
. Это нужно для переустановки Chromium. -
Переустановка Puppeteer: Убедитесь, что вы установили последнюю версию Puppeteer с помощью команды
npm install puppeteer
. -
Установка необходимых библиотек: Убедитесь, что у вас установлены все требуемые зависимости для Chromium:
sudo apt-get install -y libatk1.0-0 libatk-bridge2.0-0 libcups2 libx11-xcb1 libxss1 libasound2 libgconf-2-4
3. Проверка библиотек и конфликтов
После выполнения вышеназванных шагов важно проверить целостность необходимых библиотек:
-
Конфликтующие версии библиотек: Иногда версия установленной библиотеки может быть несовместима с версией Chromium. Для устранения этой проблемы вы можете проверить какие версии имеют конфликт:
ldd /root/.cache/puppeteer/chrome/linux-130.0.6723.58/chrome-linux64/chrome
Это даст вам полную информацию о любых недостающих символах или неподходящих версиях.
4. Обновление системы
Вы уже упомянули, что обновили пакеты системы. Однако, не забудьте убедиться, что все зависимости обновлены до последних стабильных версий:
sudo apt-get update
sudo apt-get upgrade
5. Настройка кода
Обратите внимание на параметры, используемые при запуске Puppeteer. Некоторые из них могут вызвать дополнительные проблемы со сторонними библиотеками. Например, использование флага --no-sandbox
может быть критическим. Убедитесь, что у вас есть подходящие права доступа для вашего кода.
6. Дополнительные шаги
Если описанные действия не помогли, рассмотрите следующие дополнительные шаги:
-
Логи: Включите более детализированный вывод логов, чтобы получить больше информации о том, что происходит при запуске Chromium. Вы можете использовать переменную окружения
DEBUG
:DEBUG=puppeteer:* node your-script.js
-
Обратитесь к сообществу: Иногда решение может быть найдено в сообществе пользователей Puppeteer. Рассмотрите возможность создания вопроса на Stack Overflow или GitHub, предоставив как можно больше деталей об ошибке и шагов, которые вы уже предприняли.
Заключение
Ошибка symbol lookup error
при запуске Chromium с Puppeteer на Ubuntu это распространенная проблема, связанная с зависимостями библиотек. Применяя систематический и многогранный подход к решению проблемы, вам удастся выявить источники конфликтов и устранить ошибку. Если у вас остались вопросы или требуется дополнительная помощь, сообщество всегда готово поддержать вас.