Ошибка поиска символов при запуске Chromium с Puppeteer на сервере Ubuntu

Вопрос или проблема

Я сталкиваюсь с проблемой при попытке сгенерировать 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',
    });
  1. Очистил кеш Puppeteer (/root/.cache/puppeteer).
  2. Переустановил Puppeteer.
  3. Убедился, что все необходимые библиотеки для Chromium установлены (например, libatk1.0-0, libasound2 и т.д.).
  4. Проверил наличие конфликтующих версий библиотек и установил правильную версию libasound2.
  5. Обновил системные пакеты и перезагрузил сервер.

Несмотря на эти усилия, проблема сохраняется. Я ищу идеи или решения от сообщества. Кто-нибудь сталкивался с аналогичной проблемой или можете ли вы предложить какие-либо дополнительные шаги, которые я мог бы предпринять для ее решения?

Заранее спасибо за вашу помощь!

Ответ или решение

Ошибка 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 это распространенная проблема, связанная с зависимостями библиотек. Применяя систематический и многогранный подход к решению проблемы, вам удастся выявить источники конфликтов и устранить ошибку. Если у вас остались вопросы или требуется дополнительная помощь, сообщество всегда готово поддержать вас.

Оцените материал
Добавить комментарий

Капча загружается...