@ox_lib/init.lua nie znaleziono i błędy ox_lib: jak naprawić

Błędy o @ox_lib/init.lua, Nie ma takiego exportu w zasobie ox_lib, lub ox_lib nie uruchamia się: użyj kompilacji wydania, upewnij się najpierw, dodaj shared_script, włącz lua54.

Skrypt który używa ox_lib nie ładuje się w twojej konsoli i wiadomość wspomina @ox_lib/init.lua, lub nie powiedzie się z:

text
No such export <name> in resource ox_lib

lub ox_lib sam nigdy się nie uruchamia. Wszystkie te pochodzą z tej samej kilku przyczyn: zły pobór, zła nazwa folderu, zła kolejność uruchomienia, lub brakująca linia w manifeście. Tutaj jest naprawa dla każdego.

Co to jest ox_lib

ox_lib to biblioteka dzielona którą wiele skryptów zależy: callback'i, powiadomienia, menu, paski postępu, locales. Skrypt opt-in z jedną linią w manifeście:

lua
shared_script '@ox_lib/init.lua'

Prefiks @ox_lib/ mówi FiveM aby czytał plik z zasobu zwanego ox_lib, nie z własnego folderu skryptu. Więc ox_lib musi istnieć, mieć dokładnie tę nazwę, i być uruchomiony.

1. Pobierz wydanie, nie source zip

To jest przyczyna którą większość ludzi trafia. Na GitHub, zielony przycisk Code daje ci zip źródła. ox_lib ma interfejs web (menu, paski postępu) który jest zbudowany ze źródła plików. Źródło zip nie zawiera zbudowanych plików, więc ox_lib albo nie ładuje swoją UI albo loguje wiadomość o UI nie budowanej.

Zamiast tego:

  1. Otwórz repozytorium ox_lib na GitHub, potem Releases.
  2. Na najnowszym wydaniu, pobierz plik nazwany ox_lib.zip pod Assets.
  3. Rozpakuj to. Folder wewnątrz musi być ox_lib i fxmanifest.lua musi siedzieć bezpośrednio w nim.
text
resources/[standalone]/ox_lib/fxmanifest.lua

Jeśli masz folder źródła zwany ox_lib-main, usuń go i zainstaluj wydanie zamiast. Patrz też Could not find dependency dla problemów z nazwą folderu.

2. Uruchom ox_lib przed skryptami

W server.cfg, ox_lib musi przyjść przed każdym zasobem który go importuje:

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

ensure my_script

Jeśli my_script jest zapewniany powyżej ox_lib, może się załadować pierwszy i nie powiedzie się. Przesunięcie go w dół to naprawa. Patrz prawidłowa kolejność ensure w server.cfg.

Dodaj zależność w manifeście skryptu także, więc FiveM sprawdza:

lua
dependency 'ox_lib'

3. Dodaj shared script i lua54

Skrypty które używają funkcji lib. potrzebują dwie linie w fxmanifest.lua. Bez importu, lib jest nil w skrypcie, i dostajesz błędy takie jak attempt to index a nil value (global 'lib'):

lua
fx_version 'cerulean'
game 'gta5'

lua54 'yes'

shared_script '@ox_lib/init.lua'

client_scripts { 'client/*.lua' }
server_scripts { 'server/*.lua' }

Kolejność ma znaczenie: shared_script '@ox_lib/init.lua' musi być wymieniony aby się załadował przed plikami skryptu które wołują lib. Umieść to powyżej client_scripts i server_scripts.

4. Nie ma takiego exportu w zasobie ox_lib

text
No such export <name> in resource ox_lib

To oznacza skrypt wołuje export ox_lib który nie istnieje na twoim serwerze. Są dwie przyczyny:

  • Stary ox_lib. Skrypt został napisany dla nowszego wydania. Zaktualizuj do najnowszego kompilacji wydania.
  • ox_lib nie uruchomił się, więc żaden z jego exportów nie istnieje. Spójrz na konsolę gdzie ox_lib się uruchamia. Jeśli wydrukował błąd tam, napraw to najpierw.

Sprawdzaj że ox_lib uruchamia się czysty: uruchom ensure ox_lib w konsoli serwera i przeczytaj co się drukuje. Zdrowe uruchomienie drukuje bez błędu i bez linii porażki.

5. Sprawdzaj artefakt serwera

ox_lib potrzebuje rozsądnie aktualnej kompilacji serwera FiveM. Jeśli ox_lib odmawia uruchomienia i wiadomość wspomina wersję serwera, zaktualizuj swoje artefakty. Kroki są w aktualizowaniu artefaktów serwera FiveM.

6. Skrypt sam nie jest winny

Jeśli ox_lib jest zainstalowany i uruchomiony, ale jeden skrypt wciąż psuje się, potwierdź że:

  • Folder skryptu jest nazwany jak jego linia ensure mówi.
  • Nie skopiowałeś ox_lib do folderu skryptu. Musi być jeden zasób ox_lib, na najwyższym poziomie resources (lub w folderze nawiasu).
  • Żadna druga kopia ox_lib nie istnieje w innym folderze kategorii. Dwa foldery z tą samą nazwą zasobu powodują nieprzewidywalne zachowanie.

Porada: gdy aktualizujesz ox_lib, usuń stary folder najpierw zamiast rozpakować nad nim. Stare pliki pozostawione mogą się mieszać z nowymi.

Checklist

Objaw Naprawić
@ox_lib/init.lua nie powiedzie się Zainstaluj ox_lib z dokładnie tą nazwą folderu
Części UI ox_lib brakuje Użyj ox_lib.zip z Releases, nie source zip
Nie ma takiego exportu ... w zasobie ox_lib Zaktualizuj ox_lib; sprawdzaj czy się uruchomił bez błędów
lib jest nil w skrypcie Dodaj shared_script '@ox_lib/init.lua' do manifestu
Skrypt ładuje się przed ox_lib ensure ox_lib powyżej skryptu w server.cfg
Błędy składni Lua przy ładowaniu Dodaj lua54 'yes' do manifestu

Szybkie odpowiedzi

Skąd pobrać ox_lib?

Ze strony Wydania repozytorium ox_lib, używając pliku ox_lib.zip dołączonego do najnowszego wydania. Nie używaj zielonego przycisku Code, Download ZIP, który nie ma zbudowanych plików web.

Dlaczego skrypt nie powiedzie się z @ox_lib/init.lua?

FiveM ładuje ten plik z zasobu ox_lib. Jeśli folder brakuje, jest źle nazwany, lub nie uruchamia się, ścieżka nie może być rozwiązana i skrypt nie powiedzie się.

Czy potrzebuję lua54 dla ox_lib?

Tak. Zasób który importuje @ox_lib/init.lua powinien deklarować lua54 'yes' w manifeście, ponieważ ox_lib sam używa Lua 5.4.

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 →Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.Zobacz skrypt →Quest CreatorWizualny edytor questów i dialogów z NPC, budowanych węzeł po węźle w grze.Zobacz skrypt →

Czytaj dalej