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:

text
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:

lua
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:

bash
# 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:

cfg
ensure oxmysql
ensure ox_lib
ensure my_script

Le 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:

text
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:

cfg
ensure oxmysql
ensure ox_lib
ensure es_extended        # or qb-core / qbx_core
ensure my_script

Poiché 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:

lua
dependency 'ox_lib'

Puoi anche richiedere una build di server o OneSync nello stesso elenco:

lua
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 →

Continua a leggere