Could not find dependency X for resource Y: jak to naprawić
FiveM mówi Could not find dependency ox_lib for resource Y? Co dependency w fxmanifest.lua oznacza, jak zainstalować brakujący zasób, nazewnictwo folderów i kolejność uruchamiania.
Startujesz skrypt i konsola mówi:
Could not find dependency ox_lib for resource my_script.
Couldn't start resource my_script.Skrypt odmawia startu, ponieważ czegoś, co potrzebuje, tam nie ma. Ten artykuł wyjaśnia, co linia oznacza i jak naprawić trzy zwykłe przyczyny: zasób nie jest zainstalowany, folder ma złą nazwę, lub jest w złym miejscu.
Co to jest zależność
W fxmanifest.lua, skrypt może zadeklarować, że potrzebuje innych zasobów:
fx_version 'cerulean'
game 'gta5'
dependency 'ox_lib'
-- or several at once
dependencies {
'ox_lib',
'oxmysql',
}Gdy my_script się uruchamia, FiveM sprawdza, że każda nazwa istnieje jako zasób. Jeśli jedna brakuje, start jest anulowany, co jest lepsze niż działanie połowa zepsute i wyrzucanie błędów nil później.
Nazwa, którą FiveM szuka, to nazwa zasobu, która jest nazwą folderu. Nawiasy w folderach macierzystych, takich jak [standalone] to tylko kategorie i nie są częścią nazwy.
Krok 1: znajdź, który zasób brakuje
Tekst między dependency i for resource to nazwa brakującego zasobu. W przykładzie to ox_lib. Szukaj folderu z dokładnie tą nazwą:
# from your server's resources folder
find . -maxdepth 3 -type d -name "ox_lib"Na Windows, użyj pola wyszukiwania w Eksploratorze plików w folderze resources, lub Get-ChildItem -Recurse -Directory -Filter ox_lib w PowerShell. Jeśli nic nie wraca, zasób nie jest zainstalowany.
Krok 2: zainstaluj to
Pobierz zasób z jego oficjalnego źródła, włóż folder pod resources, i dodaj go do server.cfg przed skryptem, który go potrzebuje:
ensure oxmysql
ensure ox_lib
ensure my_scriptZwykłe zależności to ox_lib i oxmysql, plus twoja struktura (es_extended, qb-core lub qbx_core). Dla ox_lib w szczególności, jest pułapka z pobieraniem: zobacz @ox_lib/init.lua not found.
Po dodaniu folderu do działającego serwera, uruchom refresh w konsoli, potem ensure my_script.
Krok 3: napraw nazwę folderu
Zależność istnieje, ale błąd wciąż się pokazuje. Sprawdzić dokładną nazwę. Oto nazwy, które ludzie przypadkowo kończą:
| Folder na dysku | Musi być |
|---|---|
ox_lib-main |
ox_lib |
ox_lib-master |
ox_lib |
oxmysql-main |
oxmysql |
qb-core-main |
qb-core |
ox_lib (1) |
ox_lib |
Zipa źródłowe GitHub dodają -main lub -master do nazwy folderu, a przeglądarki dodają (1) do powtórzonych pobrań. Przemianuj folder i zaktualizuj server.cfg aby pasował. Na Linux, wielkość liter też liczy: Ox_Lib nie jest ox_lib.
Sprawdzić też błąd zagnieżdżonego folderu, gdzie rozpakowany folder zawiera jeden więcej folder z taką samą nazwą:
resources/ox_lib/ox_lib/fxmanifest.lua (wrong)
resources/ox_lib/fxmanifest.lua (right)Krok 4: upewnij się, że zależność może się uruchomić
Jeśli folder jest dobry, ale błąd się utrzymuje, zależność może istnieć i wciąż się nie powieść. Szukaj w konsoli błędu zależności samej, który pojawi się ponad linią, którą wkleiłeś. Typowe przyczyny to błąd bazy danych dla oxmysql lub niezbudowany folder www dla ox_lib. Napraw to pierwszy, potem uruchom zależny skrypt. Szersza diagnoza jest w Couldn't start resource.
Kolejność startu w server.cfg
Zasoby zaczynają się w kolejności linii ensure. Włóż warstwy podstawowe pierwszą:
ensure oxmysql
ensure ox_lib
ensure es_extended # or qb-core / qbx_core
ensure my_scriptPonieważ my_script deklaruje swoje zależności, FiveM je uruchomi dla ciebie, jeśli zapomnisz. Mimo to, napisz kolejność. Lista, która czyta z dołu do góry jest łatwiejsza do debugowania, i skrypty, które nie deklarują zależności (wiele nie robi) działają tylko, gdy kolejność jest prawidłowa. Pełny schemat jest w the right ensure order in server.cfg.
Dodanie zależności do twojego własnego skryptu
Jeśli piszesz skrypty, zadeklaruj co używasz. Jeśli my_script wołuje exports.ox_lib lub funkcje lib., dodaj:
dependency 'ox_lib'Możesz też wymagać wersji serwera lub OneSync w tej samej liście:
dependencies {
'/onesync',
'ox_lib',
}Deklarowanie zależności zmienia trudną do przeczytania błąd nil w jasny komunikat startu.
Wskazówka: zależność wymieniona w manifeście, którą skrypt już nie używa, będzie go blokować przed startem na serwerze bez tego zasobu. Usuń stare wpisy, gdy przerabiasz skrypt.
Lista kontrolna
| Symptom | Naprawa |
|---|---|
Could not find dependency ox_lib |
Zainstaluj ox_lib pod resources |
Folder to ox_lib-main lub ox_lib (1) |
Przemianuj na dokładną nazwę zasobu |
| Folder zagnieżdżony dwukrotnie | Przenieś folder wewnętrzny w górę, aby fxmanifest.lua było bezpośrednio wewnątrz |
| Dodany folder, serwer wciąż nieświadomy | Uruchom refresh w konsoli |
| Zależność istnieje, ale się nie powiedzie | Przeczytaj jej błąd ponad linią i napraw go pierwszy |
| Kolejność niejasna | oxmysql, ox_lib, struktura, potem skrypty |
Szybkie odpowiedzi
Co oznacza Could not find dependency?
Plik fxmanifest.lua zasobu wymieniła inny zasób pod dependency lub dependencies, i FiveM nie może znaleźć zasobu z dokładnie tą nazwą na twoim serwerze.
Czy nazwa folderu zależności jest ważna?
Tak. FiveM pasuje do nazwy folderu, nie nazwy projektu. Folder zwany ox_lib-main nie jest ox_lib, więc musi być przemianowany.
Czy muszę zapewnić zależność przed skryptem?
To dobra praktyka i to utrzymuje rzeczy przewidywalne. FiveM też uruchamia wymienioną zależność dla ciebie, gdy zasób zależny się uruchamia, dopóki folder istnieje.
Skrypty bez tego problemu
Mic PhoneSkładany telefon, który rozkłada się w tablet i działa też na prawdziwym telefonie gracza.Zobacz skrypt →
CCTV Security CamerasKamery do rozstawienia, tablet z podglądem wielu kamer na żywo i drukowane zdjęcia jako dowody.Zobacz skrypt →
Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.Zobacz skrypt →