No se encuentra la dependencia X del recurso Y: cómo arreglarlo

¿FiveM dice Could not find dependency ox_lib for resource Y? Qué significa dependency en fxmanifest.lua, cómo instalar el recurso faltante, nombrar carpetas y orden de inicio.

Inicias un script y la consola dice:

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

El script se niega a iniciar porque algo que necesita no está allí. Este artículo explica qué significa la línea y cómo arreglar las tres causas usuales: el recurso no está instalado, la carpeta tiene el nombre incorrecto, o está en el lugar incorrecto.

Qué es una dependencia

En fxmanifest.lua, un script puede declarar que necesita otros recursos:

lua
fx_version 'cerulean'
game 'gta5'

dependency 'ox_lib'

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

Cuando my_script inicia, FiveM comprueba que cada nombre exista como un recurso. Si uno falta, el inicio se cancela, lo cual es mejor que ejecutar medio roto y lanzar errores nil después.

El nombre que FiveM busca es el nombre del recurso, que es el nombre de la carpeta. Los brackets en carpetas padre como [standalone] son solo categorías y no son parte del nombre.

Paso 1: encuentra qué recurso falta

El texto entre dependency y for resource es el nombre del recurso faltante. En el ejemplo es ox_lib. Busca una carpeta con exactamente ese nombre:

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

En Windows, usa la caja de búsqueda en el Explorador de archivos en la carpeta resources, o Get-ChildItem -Recurse -Directory -Filter ox_lib en PowerShell. Si nada vuelve, el recurso no está instalado.

Paso 2: instálalo

Descarga el recurso de su fuente oficial, pon la carpeta bajo resources, y añádelo a server.cfg antes que el script que lo necesita:

cfg
ensure oxmysql
ensure ox_lib
ensure my_script

Las dependencias comunes son ox_lib y oxmysql, más tu framework (es_extended, qb-core o qbx_core). Para ox_lib específicamente, hay una trampa con la descarga: ver @ox_lib/init.lua not found.

Después de añadir una carpeta a un servidor en ejecución, ejecuta refresh en la consola, luego ensure my_script.

Paso 3: arregla el nombre de la carpeta

La dependencia existe pero el error aún se muestra. Comprueba el nombre exacto. Estos son los nombres que la gente termina con accidentalmente:

Carpeta en disco Necesita ser
ox_lib-main ox_lib
ox_lib-master ox_lib
oxmysql-main oxmysql
qb-core-main qb-core
ox_lib (1) ox_lib

Los zips de fuente de GitHub añaden -main o -master al nombre de la carpeta, y los navegadores añaden (1) a descargas repetidas. Renombra la carpeta y actualiza server.cfg para que coincida. En Linux, la capitalización también importa: Ox_Lib no es ox_lib.

También comprueba el error de carpeta anidada, donde la carpeta descomprimida contiene una carpeta más con el mismo nombre:

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

Paso 4: asegúrate de que la dependencia puede iniciarse

Si la carpeta es correcta pero el error persiste, la dependencia puede existir y aún fallar ella misma. Busca en la consola el propio error de la dependencia, que aparecerá arriba de la línea que pegaste. Las causas típicas son un error de base de datos para oxmysql, o una carpeta web sin construir para ox_lib. Arregla eso primero, luego inicia el script dependiente. El diagnóstico más amplio está en Couldn't start resource.

Orden de inicio en server.cfg

Los recursos inician en el orden de las líneas de ensure. Pon las capas base primero:

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

Porque my_script declara sus dependencias, FiveM las iniciará por ti si olvidas. Aun así, escribe el orden. Una lista que lee de base a arriba es más fácil de depurar, y los scripts que no declaran una dependencia (muchos no lo hacen) solo funcionan cuando el orden es correcto. El patrón completo está en the right ensure order in server.cfg.

Añadiendo una dependencia a tu propio script

Si escribes scripts, declara lo que usas. Si my_script llama a exports.ox_lib o funciones lib., añade:

lua
dependency 'ox_lib'

También puedes requerir una compilación del servidor o OneSync en la misma lista:

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

Declarar dependencias convierte un error nil difícil de leer en un claro mensaje de inicio.

Consejo: una dependencia listada en el manifest que el script ya no usa bloqueará su inicio en un servidor sin ese recurso. Elimina entradas antiguas cuando reelabores un script.

Lista de verificación

Síntoma Solución
Could not find dependency ox_lib Instala ox_lib bajo resources
La carpeta es ox_lib-main o ox_lib (1) Renombra al nombre exacto del recurso
Carpeta anidada dos veces Mueve la carpeta interior arriba así fxmanifest.lua está directamente adentro
Carpeta añadida, servidor aún desconocedor Ejecuta refresh en la consola
La dependencia existe pero falla Lee su propio error arriba de la línea y arréglalo primero
El orden es poco claro oxmysql, ox_lib, framework, luego scripts

Respuestas rápidas

¿Qué significa Could not find dependency?

El fxmanifest.lua del recurso lista otro recurso bajo dependency o dependencies, y FiveM no puede encontrar un recurso con ese nombre exacto en tu servidor.

¿Es importante el nombre de la carpeta de la dependencia?

Sí. FiveM coincide el nombre de la carpeta, no el nombre del proyecto. Una carpeta llamada ox_lib-main no es ox_lib, así que debe ser renombrada.

¿Tengo que asegurar la dependencia antes que el script?

Es buena práctica y mantiene las cosas predecibles. FiveM también inicia una dependencia listada por ti cuando el recurso dependiente inicia, siempre que la carpeta exista.

Scripts que evitan este problema

Mic PhoneUn móvil plegable que se abre en tablet y llega al móvil real del jugador.Ver script →CCTV Security CamerasCámaras colocables, una tablet con vista múltiple en vivo y fotos como prueba.Ver script →Item Creator V2Crea items usables con animaciones, props, efectos y más — sin escribir código.Ver script →

Sigue leyendo