Could not find dependency X for resource Y: come risolverlo
FiveM dice Could not find dependency ox_lib for resource Y? Cosa significa dependency in fxmanifest.lua, come installare la risorsa mancante, denominazione della cartella e ordine di avvio.
Avvii uno script e la console dice:
Could not find dependency ox_lib for resource my_script.
Couldn't start resource my_script.Lo script si rifiuta di avviarsi perché qualcosa di cui ha bisogno non è lì. Questo articolo spiega cosa significa la riga e come risolvere le tre cause usuali: la risorsa non è installata, la cartella ha il nome sbagliato, o è nel posto sbagliato.
Cosa è una dipendenza
In fxmanifest.lua, uno script può dichiarare che ha bisogno di altre risorse:
fx_version 'cerulean'
game 'gta5'
dependency 'ox_lib'
-- or several at once
dependencies {
'ox_lib',
'oxmysql',
}Quando my_script si avvia, FiveM controlla che ogni nome esista come risorsa. Se uno manca, l'avvio è cancellato, il che è meglio di correre mezzo rotto e lanciare errori nil più tardi.
Il nome che FiveM cerca è il nome della risorsa, che è il nome della cartella. Le parentesi in cartelle padre come [standalone] sono solo categorie e non fanno parte del nome.
Passaggio 1: trova quale risorsa manca
Il testo tra dependency e for resource è il nome della risorsa mancante. Nell'esempio è ox_lib. Cerca una cartella con esattamente quel nome:
# from your server's resources folder
find . -maxdepth 3 -type d -name "ox_lib"Su Windows, usa la casella di ricerca in File Explorer sulla cartella resources, o Get-ChildItem -Recurse -Directory -Filter ox_lib in PowerShell. Se non viene restituito nulla, la risorsa non è installata.
Passaggio 2: installalo
Scarica la risorsa dalla sua fonte ufficiale, metti la cartella sotto resources, e aggiungila a server.cfg prima dello script che ne ha bisogno:
ensure oxmysql
ensure ox_lib
ensure my_scriptLe dipendenze comuni sono ox_lib e oxmysql, più il tuo framework (es_extended, qb-core o qbx_core). Per ox_lib in particolare, c'è un problema con il download: vedi @ox_lib/init.lua not found.
Dopo aver aggiunto una cartella a un server in esecuzione, esegui refresh nella console, poi ensure my_script.
Passaggio 3: correggi il nome della cartella
La dipendenza esiste ma l'errore mostra ancora. Controlla il nome esatto. Questi sono i nomi che le persone finiscono per avere per errore:
| Cartella su disco | Deve essere |
|---|---|
ox_lib-main |
ox_lib |
ox_lib-master |
ox_lib |
oxmysql-main |
oxmysql |
qb-core-main |
qb-core |
ox_lib (1) |
ox_lib |
Gli zip dei sorgenti di GitHub aggiungono -main o -master al nome della cartella, e i browser aggiungono (1) ai download ripetuti. Rinomina la cartella e aggiorna server.cfg per corrispondere. Su Linux, la capitalizzazione conta anche: Ox_Lib non è ox_lib.
Controlla anche l'errore della cartella nidificata, dove la cartella decompressa ne contiene un'altra con lo stesso nome:
resources/ox_lib/ox_lib/fxmanifest.lua (wrong)
resources/ox_lib/fxmanifest.lua (right)Passaggio 4: assicurati che la dipendenza possa avviarsi
Se la cartella è giusta ma l'errore persiste, la dipendenza potrebbe esistere e comunque fallire. Cerca nella console l'errore della dipendenza stessa, che apparirà sopra la riga che hai incollato. Le cause tipiche sono un errore di database per oxmysql, o una cartella web non compilata per ox_lib. Risolvilo per primo, poi avvia lo script dipendente. La diagnosi più ampia è in Couldn't start resource.
Ordine di avvio in server.cfg
Le risorse si avviano nell'ordine delle righe ensure. Metti i livelli di base per primi:
ensure oxmysql
ensure ox_lib
ensure es_extended # or qb-core / qbx_core
ensure my_scriptPoiché my_script dichiara le sue dipendenze, FiveM le avvierà per te se dimentichi. Anche così, scrivi l'ordine. Un elenco che legge da base a top è più facile da debuggare, e gli script che non dichiarano una dipendenza (molti non lo fanno) funzionano solo quando l'ordine è giusto. Il pattern completo è in l'ordine ensure giusto in server.cfg.
Aggiungere una dipendenza al tuo script
Se scrivi script, dichiara cosa usi. Se my_script chiama exports.ox_lib o funzioni lib., aggiungi:
dependency 'ox_lib'Puoi anche richiedere una build di server o OneSync nello stesso elenco:
dependencies {
'/onesync',
'ox_lib',
}Dichiarare le dipendenze trasforma un errore nil difficile da leggere in un chiaro messaggio di avvio.
Consiglio: una dipendenza elencata nel manifest che lo script non usa più lo bloccherà dall'avviarsi su un server senza quella risorsa. Rimuovi le vecchie voci quando rifai uno script.
Checklist
| Sintomo | Soluzione |
|---|---|
Could not find dependency ox_lib |
Installa ox_lib sotto resources |
La cartella è ox_lib-main o ox_lib (1) |
Rinomina al nome esatto della risorsa |
| Cartella nidificata due volte | Sposta la cartella interna verso l'alto così fxmanifest.lua è direttamente dentro |
| Cartella aggiunta, il server ancora ignaro | Esegui refresh nella console |
| La dipendenza esiste ma fallisce | Leggi il suo errore sopra la riga e risolvilo per primo |
| L'ordine non è chiaro | oxmysql, ox_lib, framework, poi script |
Risposte rapide
Cosa significa Could not find dependency?
Il fxmanifest.lua della risorsa elenca un'altra risorsa sotto dependency o dependencies, e FiveM non riesce a trovare una risorsa con quel nome esatto sul tuo server.
È importante il nome della cartella della dipendenza?
Sì. FiveM corrisponde al nome della cartella, non al nome del progetto. Una cartella chiamata ox_lib-main non è ox_lib, quindi deve essere rinominata.
Devo fare ensure della dipendenza prima dello script?
È una buona pratica e mantiene le cose prevedibili. FiveM avvia anche una dipendenza elencata per te quando la risorsa dipendente si avvia, finché la cartella esiste.
Script senza questo problema
Mic PhoneUn telefono pieghevole che si apre in un tablet e arriva sul telefono vero del giocatore.Vedi script →
CCTV Security CamerasTelecamere posizionabili, un tablet multi-vista in diretta e foto stampate come prove.Vedi script →
Item Creator V2Crea oggetti utilizzabili con animazioni, props, effetti e altro — senza scrivere codice.Vedi script →