Rozwiązywanie problemów z aplikacjami Fabric

Diagnozowanie typowych problemów podczas opracowywania lub wdrażania projektu Fabric Apps. W tym artykule opisano problemy z logowaniem, usługami lokalnymi, zmianami schematu, hostem statycznym i interfejsem wiersza polecenia.

Problemy z wdrażaniem

Wdrożenie kończy się niepowodzeniem z powodu błędu 401 lub 403

Objawem: Uruchomienie npx rayfin up zwraca błąd uwierzytelniania.

Przyczyna: Twoja sesja uwierzytelniania wygasła lub nie zalogowano się.

Rozwiązanie:

Ponowne uwierzytelnianie i ponów próbę wdrożenia:

npx rayfin login
npx rayfin up

Zastosowanie bazy danych zgłasza destrukcyjne zmiany

Objawem: Uruchamianie npx rayfin up db apply bloków z ostrzeżeniem o utracie danych.

Spowodować: Interfejs wiersza polecenia wykrył zmiany schematu, które mogą usuwać dane (upuszczając kolumny, zmieniając nazwy tabel).

Rozwiązanie:

Uważnie przejrzyj wymienione operacje. Jeśli zaakceptujesz utratę danych, użyj polecenia --force:

npx rayfin up db apply --force

Caution

Użycie --force może spowodować trwałą utratę danych. Przed kontynuowaniem sprawdź operacje.

Wdrożenie statyczne przekracza limit rozmiaru

Objawem: Wdrażanie zawartości statycznej kończy się niepowodzeniem z powodu błędu limitu rozmiaru.

Przyczyna: Skompresowane archiwum przekracza 100 MB.

Rozwiązanie:

Zmniejsz rozmiar danych wyjściowych kompilacji, wykonując następujące zadania:

  • Wykluczanie map źródłowych z kompilacji produkcyjnych
  • Optymalizowanie lub usuwanie dużych obrazów i wideo
  • Przenoszenie plików binarnych do pamięci masowej zamiast dołączania ich do pakietu
  • Weryfikowanie konfiguracji pakietu wyklucza artefakty programistyczne

Problemy z uwierzytelnianiem

Sesja nie utrzymuje się po zalogowaniu

Objawem: Użytkownicy są wylogowani natychmiast po uwierzytelnieniu.

Przyczyna: Klient nie jest skonfigurowany z poprawnym bazowym adresem URL ani kluczem publicznym.

Rozwiązanie:

Sprawdź, czy konfiguracja RayfinClient odpowiada Twojemu backendowi:

const client = new RayfinClient({
  baseUrl: import.meta.env.VITE_RAYFIN_API_URL ?? 'http://localhost:5168',
  publishableKey: import.meta.env.VITE_RAYFIN_PUBLISHABLE_KEY,
});

Zablokowano wyskakujące okno logowania SSO w usłudze Fabric

Symptom: Przeglądarka blokuje okno portalu Fabric podczas logowania.

Przyczyna:ensureSignedInWithFabric() nie zostało wywołane z procedury obsługi gestu użytkownika.

Rozwiązanie:

Wywołaj funkcję z synchronicznej procedury obsługi zdarzeń:

async function handleClick() {
  await ensureSignedInWithFabric(client.auth, options);
}

// Attach to button click
<button onClick={handleClick}>Sign in</button>

Problemy z modelem danych

Relacje nie pojawiają się w API

Objawem: Pola powiązanej jednostki nie są dostępne podczas wykonywania zapytań.

Przyczyna: Brakuje dekoratora nawigacji lub schemat nie został zastosowany.

Rozwiązanie:

  1. Sprawdź, czy dekoratory relacji są obecne:

    @one(() => Notebook) notebook?: Notebook;
    
  2. Ponownie zastosuj schemat.

Zasady autoryzacji nie działają

Objawem: Użytkownicy mogą uzyskiwać dostęp do rekordów, których nie powinni widzieć.

Przyczyna: Wyrażenie zasad jest nieprawidłowe lub nazwy oświadczeń nie są zgodne.

Rozwiązanie:

  1. Sprawdź, czy zasady używają poprawnych nazw oświadczeń (sub, email, role):

    policy: (claims, item) => claims.sub.eq(item.user_id)
    
  2. Zapisz w logach zdekodowany token JWT, aby sprawdzić, czy wartości deklaracji odpowiadają wartościom w kodzie.

Nieaktualne odpowiedzi API

Objawem: Fronton zwraca nieaktualne kształty danych po zmianie schematu.

Przyczyna: Wygenerowana konfiguracja jest przechowywana w pamięci podręcznej.

Rozwiązanie:

  1. Zatrzymaj backend.

  2. Usuń katalog .temp/ w rayfin/:

    rm -rf rayfin/.temp/
    
  3. Uruchom ponownie usługi i ponownie zastosuj schemat.

Problemy z interfejsem wiersza polecenia

Nie znaleziono polecenia

Objaw: Po uruchomieniu npx rayfin wyświetla się komunikat „nie znaleziono polecenia”.

Przyczyna: Narzędzie CLI nie jest zainstalowane lub npm nie znajduje się w zmiennej PATH.

Rozwiązanie:

  1. Sprawdź, czy Node.js i narzędzie npm są zainstalowane:

    node --version
    npm --version
    
  2. Zainstaluj ponownie zależności:

    npm install
    

Niezgodność wersji CLI

Objaw: Polecenia CLI zwracają nieoczekiwane błędy po aktualizacji.

Przyczyna: Buforowana wersja CLI jest nieaktualna.

Rozwiązanie:

Zaktualizuj i zainstaluj ponownie:

npm update --save
npm install
npx rayfin --version

Niezgodność między globalną a lokalną wersją CLI

Objaw: Polecenia CLI kończą się nieoczekiwanymi błędami we wszystkich projektach.

Przyczyna: Globalna i lokalna instalacja CLI oraz niezgodność ich wersji.

Rozwiązanie: Zweryfikuj wersję lokalną npm list @microsoft/rayfin-cli. To pokazuje wersję w katalogu node_modules bieżącego projektu. Sprawdź wersję npm list -g @microsoft/rayfin-cliglobalną . Spowoduje to wyświetlenie zainstalowanej wersji dla całego systemu. Użyj npm uninstall -g z pakietem CLI Rayfin, aby usunąć globalną wersję i korzystać z wersji lokalnych.

Problemy z kompilacją i pakowaniem

Polecenie kompilacji kończy się niepowodzeniem

Objawem: Wdrażanie hostingu statycznego kończy się niepowodzeniem, ponieważ polecenie kompilacji nie wygenerowało żadnych danych wyjściowych.

Spowodować: Błędy kompilacji lub nieprawidłowo skonfigurowane polecenie kompilacji.

Rozwiązanie:

  1. Uruchom polecenie kompilacji ręcznie:

    npm run build
    
  2. Napraw wszelkie zgłoszone błędy.

  3. Sprawdź, czy folder wyjściowy zawiera pliki.

Pusty folder statyczny

Objawem: Wdrażanie statyczne kończy się niepowodzeniem z powodu błędu "pusty folder".

Spowodować: Skonfigurowana folder ścieżka jest niepoprawna.

Rozwiązanie:

Sprawdź, czy ścieżka folder w rayfin.yml odpowiada danym wyjściowym kompilacji:

services:
  staticHosting:
    folder: dist  # Verify this matches your build output
    buildCommand: npm run build

Problemy z bazą danych

Odmowa połączenia

Objaw: Operacje na danych nie powiodą się z powodu błędów połączenia.

Przyczyna: Kontener bazy danych nie jest uruchomiony lub kontrole kondycji zakończyły się niepowodzeniem.

Rozwiązanie:

  1. Przejrzyj dzienniki kontenerów:

    docker compose logs -f
    
  2. Uruchom ponownie usługi.

Utrata danych po ponownym uruchomieniu

Objawem: Dane znikają po zatrzymaniu i uruchomieniu usług.

Przyczyna: Woluminy zostały usunięte przy użyciu polecenia --purge.

Rozwiązanie:

Użyj --down zamiast --purge , aby zachować dane.

Znane ograniczenia

Aby zapoznać się z bieżącymi ograniczeniami i zalecanymi obejściami, zobacz:

  • count() nie jest dostępne w kliencie Fluent GraphQL — użyj results.length.
  • Relacje wiele-do-wielu nie są obsługiwane — użyj jawnej jednostki sprzężenia.
  • Obiekty sesji są nieprzejrzyste — sprawdź właściwości isAuthenticated lub user.
  • Po włączeniu lub wyłączeniu uwierzytelniania w programie rayfin.ymluruchom ponownie zaplecze.

Uzyskaj pomoc

Jeśli problem nadal występuje:

  1. Zapoznaj się z dokumentacją Fabric Apps.
  2. Sprawdź repozytorium GitHub pod kątem znanych problemów.
  3. Prześlij zgłoszenie błędu wraz ze szczegółowymi logami i krokami odtworzenia problemu.