Ошибки в логах и их причины

На данной странице собраны самые основные и популярные ошибки, возникающие при деплое приложения различных окружений.

Ошибки, актуальные для всех окружений

Самая распространенная ошибка связана с некорректным указанием пути к базе данных SQLite. Подробно о работе с SQLite здесь: SQLite

RUNNING - FAILED - SUCCEEDED - DELETED в цикле лога приложения (не сборки)

Если статусы в логе приложения (не лог сборки) ушли в подобный бесконечный цикл.

  1. Повысьте тариф до одного из старших. Скорее всего приложению не хватает ресурса, чтобы запуститься. Потом его можно будет понизить.

  2. Проверьте, что вы загрузили не пустые файлы. Для этого скачайте код из раздела «Репозиторий» и посмотрите содержимое.

Важно, статус DELETED не является ошибкой работы проекта. Это нормальный статус при сборке и запуске приложения.

Terminated by other getupdates request (Телеграм бот)

Экземляр бота конфликтует с другим

Нужно:

  1. Убедиться, что выставлен только 1 инстанс. Телеграм боты в режиме опроса не поддерживают горизонтальное масштабирование

  2. Убедиться, что токен бота больше нигде не используется и бот нигде не запущен.

Проще всего просто сбросить токен в @BotFather

Permission denied - не все файлы после заморозки/пересборки проекта удалились/обновились:

Если заморозить проект и сразу же пересобрать, то папка venv в Artifacts, отвечающая за окружение Python, повреждается, не успевая удалиться перед новой сборкой, из-за чего возникают ошибки вида:

  • ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/.local'

  • /app/venv/bin/python3: No module named pip.__main__; 'pip' is a package and cannot be directly executed

  • Error: [Errno 13] Permission denied: '/app/venv'

Решить можно полной очисткой Artifacts. Для этого нужно перейти в «Настройки» и повторно заморозить проект, но на этот раз дать больше времени (около 20 секунд) для того, чтобы папка venv успевала удалиться и не вызывала конфликтов во время сборки.

Python

Некоторые коды ошибок и их следствия могут относиться к различным окружениям.

ModuleNotFoundError, ImportError

  • ModuleNotFoundError: No module named '...'

  • ImportError: cannot import name '...' from '...' (/app/...)

Ошибка говорит о том, что импортируемая библиотека (или модуль, пакет) не найден.

В случае, если импортируется стороннаяя библиотека (из pip):

  1. Сверить название библиотеки в pip на сайте https://pypi.org

  2. Проверить, указано ли название библиотеки в файле зависимостей (requirements.txt) и правильно ли указан путь до requirements.txt или его название. Возможно он вообще не загружен или имеет некорректный формат

  3. Сборка не завершилась или завершилась с ошибкой

  4. Проверить лог сборки: возможно, версия библиотеки не поддерживается версией Python

В случае, если импортируется внутренний модуль, пакет (т.е. в самом проекте):

  1. Проверить, загружен ли модуль

  2. Если модуль загружен, импорт работает локально, то дело в том, что изначально в Docker все импорты производятся относительно запускаемого файла, который прописан в scriptName. Решить можно, указав импорт относительно корня Artifacts (/app), с помощью параметра PYTHONPATH в значении /app без сторонних символов и кавычек.

SyntaxError

  • SyntaxError: invalid syntax

Ошибка прямо говорит об ошибке синтаксиса, однако иногда это связано с небольшими различиями в синтакисе различных версий Python (локально и на сервере)

  • В случае, если код работает локально: Поднять версию Python в конфигурации до той, на который скрипт работает без проблем. Это связано с различием формата форматированных строк в Python разных версий и другими изменениями синтаксиса.

  • В случае, если код также не работает локально: Ошибка именно в коде

Can’t open file „/app/…“ [Errno 2] No such file or directory

Файл не найден в папке работающего приложения (/app)

Глобально (актуально для всех окружений):

  1. Сборка не завершилась или завершилась с ошибкой (файлы не скопировались в Artifacts)

  2. Для Docker окружения - файлы не скопированы в Dockerfile

  3. Путь/имя файла в конфигурации указаны некорректно. Если файл находится во вложенной папке - это обязательно нужно указать

  4. Иногда, если используется параметр command в конфигурации, а название файла состоит из нескольких слов, то имя/путь до файла нужно заключить в кавычки. Актуально также для Dockerfile. Команда запуска может быть регистрозависима»

Основные ошибки при сборке

  • Failed to build installable wheels for some pyproject.toml based projects

Ошибка в основном говорит о конфликте некоторых зависимостей.

В случае, если в ошибке явно не указаны зависимости, которые конфликтуют:

  1. Если использовался pip freeze, самостоятельно прописать ТОЛЬКО импортируемые в коде библиотеки. Вспомогательные библиотеки устанавливаются вместе с импортируемой библиотекой. Именно различия в версиях вспомогательных библиотек и импортируемой вызывают подобные конфликты

В случае, если в ошибке указаны конфликтующие зависимости:

  1. Обычно конфликтуют именно версии этих библиотек, указанные пользователем. В этом случае лучше отказаться от указания версии - pip автоматически подберет некофликтующие версии.

  • Could not find a version that satisfies the requirement

Не найдена конкретная версия библиотеки/библиотека в общем в реестре библиотек pip

Глобально:

  1. Версия библиотеки/библиотека не поддерживается версией Python

  2. Некорректно указано название библиотеки. Необходимо сверить с https://pypi.org

Java

no main manifest attribute, in …

В конечном .jar файле не найден Main класс (аттрибут)

Необходимо:

  1. Проверить, что соблюдается шаблон путей в сборщике (maven/gradle)

  2. Проверить, что загружены ВСЕ файлы проекта.»

Error: Unable to access jarfile

Jar-файл не найден

  1. Возможно, параметры секции artifacts указаны некорректно.

  2. Название .jar в параметре jarName указано неправильно. Название нужно брать из Artifacts, если приложение собралось успешно.»

Node.JS

Could not read package.json: Error: ENOENT: no such file or directory, open „/app/…“

package.json не скопировался в артефакты / не загружен

  1. Проверить, загружен ли package.json

  2. package.json обязательно должен быть в корне репозитория Code

Подсказка

Если не получается разобраться, пишите в поддержку support@amvera.ru. Просим сразу указывать имя пользователя и проекта. Мы постараемся помочь.