Не смогли найти зависимость X для ресурса Y: как исправить
FiveM говорит Could not find dependency ox_lib для ресурса Y? Что зависимость в fxmanifest.lua означает, как установить отсутствующий ресурс, имя папки и порядок запуска.
Вы запускаете скрипт и консоль говорит:
Could not find dependency ox_lib for resource my_script.
Couldn't start resource my_script.Скрипт отказывается запускаться, потому что чего-то, что ему нужно, нет. Эта статья объясняет, что означает строка и как исправить три обычные причины: ресурс не установлен, папка имеет неправильное имя, или она находится в неправильном месте.
Что такое зависимость
В fxmanifest.lua, скрипт может объявить, что ему нужны другие ресурсы:
fx_version 'cerulean'
game 'gta5'
dependency 'ox_lib'
-- or several at once
dependencies {
'ox_lib',
'oxmysql',
}Когда my_script запускается, FiveM проверяет, что каждое имя существует как ресурс. Если один отсутствует, запуск отменяется, что лучше чем запуск половины сломанного и бросание ошибок nil позже.
Имя, которое FiveM ищет — это имя ресурса, которое — это имя папки. Скобки в родительских папках, таких как [standalone], — только категории и не являются частью имени.
Шаг 1: найдите, какой ресурс отсутствует
Текст между dependency и for resource — это имя отсутствующего ресурса. В примере это ox_lib. Ищите папку с ровно этим имена:
# from your server's resources folder
find . -maxdepth 3 -type d -name "ox_lib"На Windows, используйте поле поиска в Проводнике на папке resources, или Get-ChildItem -Recurse -Directory -Filter ox_lib в PowerShell. Если ничего не приходит, ресурс не установлен.
Шаг 2: установите его
Загрузите ресурс из его официального источника, поместите папку под resources, и добавьте её в server.cfg перед скриптом, который её требует:
ensure oxmysql
ensure ox_lib
ensure my_scriptОбщие зависимости — это ox_lib и oxmysql, плюс ваш фреймворк (es_extended, qb-core или qbx_core). Для ox_lib конкретно, есть ловушка при загрузке: см. @ox_lib/init.lua not found.
После добавления папки на запущенный сервер, запустите refresh в консоли, затем ensure my_script.
Шаг 3: исправьте имя папки
Зависимость существует, но ошибка всё ещё показывается. Проверьте точное имя. Вот имена, которыми люди случайно заканчиваются:
| Папка на диске | Должна быть |
|---|---|
ox_lib-main |
ox_lib |
ox_lib-master |
ox_lib |
oxmysql-main |
oxmysql |
qb-core-main |
qb-core |
ox_lib (1) |
ox_lib |
GitHub исходные zip добавляют -main или -master к имени папки, и браузеры добавляют (1) к повторным загрузкам. Переименуйте папку и обновите server.cfg для совпадения. На Linux, капитализация имеет значение тоже: Ox_Lib — это не ox_lib.
Также проверьте вложенную папку ошибку, где распакованная папка содержит один больше папку с тем же имена:
resources/ox_lib/ox_lib/fxmanifest.lua (wrong)
resources/ox_lib/fxmanifest.lua (right)Шаг 4: убедитесь, что зависимость может запуститься
Если папка правильная, но ошибка остаётся, зависимость может существовать и всё ещё не удаться. Посмотрите в консоли свою собственную ошибку зависимости, которая появится выше строки, которую вы вставили. Типичные причины — ошибка базы данных для oxmysql, или незаконченная папка web для ox_lib. Сначала исправьте это, затем запустите зависимый скрипт. Широкая диагностика находится в Couldn't start resource.
Порядок запуска в server.cfg
Ресурсы запускаются в порядке строк ensure. Поместите базовые слои первым:
ensure oxmysql
ensure ox_lib
ensure es_extended # or qb-core / qbx_core
ensure my_scriptПотому что my_script объявляет свои зависимости, FiveM запустит их для вас, если вы забудете. Даже так, напишите порядок. Список, который читает от базы к вершине, проще отладить, и скрипты, которые не объявляют зависимость (многие не делают), только работают, когда порядок правильный. Полный паттерн находится в правильный порядок ensure в server.cfg.
Добавление зависимости в ваш собственный скрипт
Если вы пишете скрипты, объявите, что вы используете. Если my_script вызывает exports.ox_lib или функции lib., добавьте:
dependency 'ox_lib'Вы также можете требовать версию сервера или OneSync в том же списке:
dependencies {
'/onesync',
'ox_lib',
}Объявление зависимостей превращает трудно читаемую ошибку nil в ясное сообщение запуска.
Совет: зависимость, перечисленная в манифесте, которую скрипт больше не использует, будет блокировать его запуск на сервере без этого ресурса. Удалите старые записи, когда вы переделываете скрипт.
Контрольный список
| Проблема | Решение |
|---|---|
Could not find dependency ox_lib |
Установите ox_lib под resources |
Папка — это ox_lib-main или ox_lib (1) |
Переименуйте на точное имя ресурса |
| Папка вложена дважды | Переместите внутреннюю папку вверх, чтобы fxmanifest.lua был напрямую внутри |
| Добавлена папка, сервер всё ещё неосведомлен | Запустите refresh в консоли |
| Зависимость существует, но не удаётся | Читайте её собственную ошибку выше строки и сначала её исправьте |
| Порядок неясен | oxmysql, ox_lib, фреймворк, затем скрипты |
Короткие ответы
Что означает Could not find dependency?
fxmanifest.lua ресурса перечисляет другой ресурс под dependency или dependencies, и FiveM не может найти ресурс с этим точным именем на вашем сервере.
Важно ли имя папки зависимости?
Да. FiveM совпадает имя папки, не имя проекта. Папка под названием ox_lib-main — это не ox_lib, поэтому она должна быть переименована.
Нужно ли мне ensure зависимость перед скриптом?
Это хорошая практика и она держит вещи предсказуемыми. FiveM также запускает перечисленную зависимость для вас, когда зависимый ресурс запускается, пока папка существует.
Скрипты без этой проблемы
Mic PhoneСкладной телефон, который раскладывается в планшет и работает и на настоящем телефоне игрока.Смотреть скрипт →
CCTV Security CamerasУстанавливаемые камеры, планшет с мультиэкраном в реальном времени и распечатанные фото-улики.Смотреть скрипт →
Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →