Could not find dependency X for resource Y : comment réparer

FiveM dit Could not find dependency ox_lib for resource Y ? Que signifie dependency dans fxmanifest.lua, comment installer la ressource manquante, dénomination des dossiers et ordre de démarrage.

Vous démarrez un script et la console dit :

text
Could not find dependency ox_lib for resource my_script.
Couldn't start resource my_script.

Le script refuse de démarrer parce que quelque chose dont il a besoin n'est pas là. Cet article explique ce que la ligne signifie et comment réparer les trois causes habituelles : la ressource n'est pas installée, le dossier a le mauvais nom, ou il est au mauvais endroit.

Ce qu'est une dépendance

Dans fxmanifest.lua, un script peut déclarer qu'il a besoin d'autres ressources :

lua
fx_version 'cerulean'
game 'gta5'

dependency 'ox_lib'

-- or several at once
dependencies {
    'ox_lib',
    'oxmysql',
}

Quand my_script démarre, FiveM vérifie que chaque nom existe comme ressource. Si l'un manque, le démarrage est annulé, ce qui est mieux que de s'exécuter à moitié cassé et jeter des erreurs nil plus tard.

Le nom que FiveM cherche est le nom de la ressource, qui est le nom du dossier. Les crochets dans les dossiers parents comme [standalone] sont seulement des catégories et ne font pas partie du nom.

Étape 1 : trouver quelle ressource manque

Le texte entre dependency et for resource est le nom de la ressource manquante. Dans l'exemple c'est ox_lib. Cherchez un dossier avec exactement ce nom :

bash
# from your server's resources folder
find . -maxdepth 3 -type d -name "ox_lib"

Sur Windows, utilisez la boîte de recherche dans l'Explorateur de fichiers sur le dossier resources, ou Get-ChildItem -Recurse -Directory -Filter ox_lib dans PowerShell. Si rien ne revient, la ressource n'est pas installée.

Étape 2 : l'installer

Téléchargez la ressource depuis sa source officielle, mettez le dossier sous resources, et ajoutez-le à server.cfg avant le script qui l'utilise :

cfg
ensure oxmysql
ensure ox_lib
ensure my_script

Les dépendances courantes sont ox_lib et oxmysql, plus votre framework (es_extended, qb-core ou qbx_core). Pour ox_lib spécifiquement, il y a une astuce avec le téléchargement : voir @ox_lib/init.lua non trouvé.

Après l'ajout d'un dossier à un serveur en cours d'exécution, exécutez refresh dans la console, puis ensure my_script.

Étape 3 : réparer le nom du dossier

La dépendance existe mais l'erreur s'affiche toujours. Vérifiez le nom exact. Voici les noms que les gens se retrouvent avec par accident :

Dossier sur disque Doit être
ox_lib-main ox_lib
ox_lib-master ox_lib
oxmysql-main oxmysql
qb-core-main qb-core
ox_lib (1) ox_lib

Les zips de source GitHub ajoutent -main ou -master au nom du dossier, et les navigateurs ajoutent (1) aux téléchargements répétés. Renommez le dossier et mettez à jour server.cfg pour correspondre. Sur Linux, la capitalisation importe aussi : Ox_Lib n'est pas ox_lib.

Vérifiez aussi l'erreur de dossier imbriqué, où le dossier décompressé contient un dossier de plus avec le même nom :

text
resources/ox_lib/ox_lib/fxmanifest.lua   (wrong)
resources/ox_lib/fxmanifest.lua          (right)

Étape 4 : s'assurer que la dépendance peut démarrer

Si le dossier est correct mais l'erreur persiste, la dépendance peut exister et toujours échouer elle-même. Cherchez dans la console l'erreur propre de la dépendance, qui apparaîtra au-dessus de la ligne que vous avez collée. Les causes typiques sont une erreur de base de données pour oxmysql, ou un dossier web non construit pour ox_lib. Corrigez cela en premier, puis démarrez le script dépendant. Le diagnostic plus large est dans Couldn't start resource.

Ordre de démarrage dans server.cfg

Les ressources démarrent dans l'ordre des lignes ensure. Mettez d'abord les couches de base :

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

Puisque my_script déclare ses dépendances, FiveM les démarrera pour vous si vous oubliez. Même ainsi, écrivez l'ordre. Une liste qui se lit de bas en haut est plus facile à déboguer, et les scripts qui ne déclarent pas une dépendance (beaucoup ne le font pas) ne fonctionnent que quand l'ordre est correct. Le modèle complet est dans le bon ordre ensure dans server.cfg.

Ajouter une dépendance à votre propre script

Si vous écrivez des scripts, déclarez ce que vous utilisez. Si my_script appelle exports.ox_lib ou des fonctions lib., ajoutez :

lua
dependency 'ox_lib'

Vous pouvez aussi exiger un build de serveur ou OneSync dans la même liste :

lua
dependencies {
    '/onesync',
    'ox_lib',
}

Déclarer les dépendances transforme une erreur nil difficile à lire en un message de démarrage clair.

Conseil : une dépendance listée dans le manifest que le script n'utilise plus le bloquera de démarrer sur un serveur sans cette ressource. Supprimez les anciennes entrées quand vous reworkez un script.

Checklist

Problème Solution
Could not find dependency ox_lib Installez ox_lib sous resources
Le dossier est ox_lib-main ou ox_lib (1) Renommez au nom exact de la ressource
Le dossier imbriqué deux fois Déplacez le dossier interne pour que fxmanifest.lua soit directement à l'intérieur
Dossier ajouté, le serveur toujours inconscient Exécutez refresh dans la console
La dépendance existe mais échoue Lisez sa propre erreur au-dessus de la ligne et corrigez-la d'abord
L'ordre est peu clair oxmysql, ox_lib, framework, puis scripts

Réponses rapides

Que signifie Could not find dependency ?

Le fxmanifest.lua de la ressource liste une autre ressource sous dependency ou dependencies, et FiveM ne peut pas trouver une ressource avec ce nom exact sur votre serveur.

Le nom du dossier de la dépendance est-il important ?

Oui. FiveM correspond au nom du dossier, pas au nom du projet. Un dossier appelé ox_lib-main n'est pas ox_lib, donc il doit être renommé.

Dois-je ensure la dépendance avant le script ?

C'est une bonne pratique et cela garde les choses prévisibles. FiveM démarre aussi une dépendance listée pour vous quand la ressource dépendante démarre, tant que le dossier existe.

Des scripts sans ce problème

Mic PhoneUn téléphone pliable qui se déplie en tablette et se prolonge jusqu’au vrai téléphone du joueur.Voir le script →CCTV Security CamerasDes caméras à placer, une tablette multi-vues en direct et des photos imprimées comme preuves.Voir le script →Item Creator V2Créez des items utilisables avec animations, props, effets et plus — sans écrire une ligne de code.Voir le script →

À lire aussi