Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Diagnosticar problemas comuns ao desenvolver ou implantar um projeto de aplicativos Fabric. Este artigo aborda problemas com entrada, serviços locais, alterações de esquema, hospedagem estática e CLI.
Problemas de implantação
A implantação falha com erro 401 ou 403
Sintoma: A execução npx rayfin up retorna um erro de autenticação.
Causa: Sua sessão de autenticação expirou ou você não está conectado.
Solution:
Autentique-se novamente e tente a implantação outra vez:
npx rayfin login
npx rayfin up
A implantação estática excede o limite de tamanho
Sintoma: A implantação de conteúdo estático falha com um erro de limite de tamanho.
Causa: O arquivo compactado excede 100 MB.
Solution:
Reduza o tamanho da saída do build em:
- Excluindo mapas de código-fonte das compilações de produção
- Otimizando ou removendo vídeos e imagens grandes
- Movendo arquivos binários para o armazenamento em vez de agrupar-os
- Verificar se a configuração do empacotador exclui artefatos de desenvolvimento
A implantação estática não possui endpoint remoto
Sintoma: Ao executar npx rayfin up staticapp deploy, é informado que nenhum endpoint remoto está configurado.
Causa: Implantação apenas estática atualiza uma implantação existente. Ele não consegue provisionar o app remoto inicial.
Solution:
Execute uma implantação completa uma vez:
npx rayfin up
Após a conclusão do provisionamento, use npx rayfin up staticapp deploy para atualizações subsequentes somente estáticas.
Problemas de autenticação
Falha na aquisição de token de autenticação
Sintoma:npx rayfin login ou outro comando autenticado da CLI relata Failed to acquire authentication token ou um erro de armazenamento de credenciais.
Causa: A CLI não está logada, ou o ambiente não oferece armazenamento de credenciais apoiado no sistema operacional.
Solution:
Faça login novamente:
npx rayfin login
Para um ambiente de desenvolvimento local restrito sem armazenamento de credenciais, você pode ativar o recurso de respaldo da criptografia:
npx rayfin login --encryption-fallback-enabled
Aviso
O recurso de respaldo da criptografia armazena o cache do token em texto simples. Use apenas em um ambiente de desenvolvimento confiável. Não use em ambientes de produção ou compartilhados.
Sessão não é mantida após fazer login
Sintoma: Os usuários são desconscritos imediatamente após a autenticação.
Causa: O cliente não está configurado com a URL base correta ou a chave publicável.
Solution:
Verifique se a RayfinClient configuração corresponde ao back-end:
const client = new RayfinClient({
baseUrl: import.meta.env.VITE_RAYFIN_API_URL ?? 'http://localhost:5168',
publishableKey: import.meta.env.VITE_RAYFIN_PUBLISHABLE_KEY,
});
Pop-up do SSO do Fabric bloqueado
Symptom: Browser bloqueia a janela do portal Fabric durante a entrada.
Causa:ensureSignedInWithFabric() não foi invocado em um manipulador de gesto do usuário.
Solution:
Chame a função a partir de um manipulador de eventos síncrono:
async function handleClick() {
await ensureSignedInWithFabric(client.auth, options);
}
// Attach to button click
<button onClick={handleClick}>Sign in</button>
A autenticação do Fabric expira
Sintoma: A autenticação Fabric falha após cinco minutos.
Causa: O portal Fabric não retornou o código de transferência antes de o fluxo expirar.
Solution:
Confirme se returnOrigin corresponde à origem do seu app, feche o popup e reinicie o fluxo de login.
Fabric SSO informa incompatibilidade de origem
Sintoma: O encaminhamento de SSO do Fabric rejeita a resposta porque a origem dela não corresponde.
Causa:returnOrigin, allowedRedirectUris, ou fabricPortalUrl não corresponde ao ambiente onde o app e o portal do Fabric estão rodando.
Solution:
- Defina
returnOrigincomo a origem base do seu app. - Confirme que a origem aparece em
services.auth.allowedRedirectUris. - Use a URL do portal Fabric para o ambiente correto de produção, prévia ou desenvolvimento.
- Execute
npx rayfin updepois de alterarrayfin.yml.
Para mais informações, veja Configurar URIs de redirecionamento de autenticação.
initEmbeddedAuth() retorna null
Sintoma: Autenticação embutida não cria uma sessão.
Causa: O SDK não detectou que o app está rodando dentro do Fabric.
Solution:
Inclua ?fabricEmbedded=true na URL do app, ou defina fabricEmbedded: true em FabricAuthOptions.
A autenticação do Fabric indica uma incompatibilidade de estado
Sintoma: O login falha porque o estado da resposta não corresponde ao estado da solicitação.
Causa: A resposta pertence a um fluxo expirado ou a uma tentativa anterior de log-in.
Solution:
Feche o pop-up do Fabric e reinicie o fluxo de login. Não reutilize URLs de callback ou valores de estado de uma tentativa anterior.
Problemas de modelo de dados
A API de dados retorna um erro interno no servidor após a implantação
Sintoma:npx rayfin up ou npx rayfin up db apply tem sucesso, mas a API de dados GraphQL ou REST retorna um erro interno do servidor.
Causa: No Microsoft SQL Server, um @text() campo sem max gera uma NVARCHAR(MAX) coluna, o que pode impedir a geração de esquemas do GraphQL.
Solution:
Adicione um comprimento máximo explícito a cada campo de texto afetado:
@text({ max: 200 })
title!: string;
Depois, revise e aplique a mudança de esquema:
npx rayfin up db apply --force
Caution
Revise todas as operações reportadas antes de usar --force. A opção pode causar perda permanente de dados.
O serviço de dados requer um dialeto
Sintoma: A implantação falha com uma resposta HTTP 400 e reporta Dialect is required when Data module is enabled.
Causa:services.data.enabled é true, mas rayfin.yml não define um dialeto.
Solution:
Configurar Microsoft SQL Server:
services:
data:
enabled: true
dialect: mssql
Nova entidade não está disponível após a implantação
Sintoma: A implantação é bem-sucedida, mas consultas contra uma entidade nova ou alterada falham ou se comportam como se a entidade não existisse.
Causa: O esquema do banco de dados pode ainda estar se aplicando, ou a interface pode estar usando tipos gerados obsoletos ou configuração em cache.
Solution:
Confira a implantação:
npx rayfin up statusAguarde até que a implantação esteja íntegra.
Atualize ou reconstrua o frontend.
Se a entidade ainda falhar, aplique o esquema explicitamente:
npx rayfin up db apply
Para o fluxo de trabalho completo, veja Aplicar e verificar alterações de esquema.
Relações que não aparecem na API
Sintoma: Os campos de entidade relacionados não estão disponíveis durante a consulta.
Causa: O decorador de navegação está ausente ou o esquema não foi aplicado.
Solution:
Verifique se os decoradores de relação estão presentes:
@one(() => Notebook) notebook?: Notebook;Reaplicar o esquema.
A política de autorização não está funcionando
Sintoma: Os usuários podem acessar registros que não devem ver.
Causa: A expressão de política está incorreta ou os nomes de declaração não correspondem.
Solution:
Verifique se a política usa nomes de declaração corretos (
sub,email,role):policy: (claims, item) => claims.sub.eq(item.user_id)Registre o JWT decodificado para verificar se os valores de declaração correspondem ao seu código.
Respostas de API obsoletas
Sintoma: O front-end retorna formas de dados desatualizadas após alterações de esquema.
Causa: A configuração gerada é armazenada em cache.
Solution:
Interrompa o servidor.
Exclua o
.temp/diretório emrayfin/:rm -rf rayfin/.temp/Reinicie os serviços e reaplica o esquema.
Problemas da CLI
Comando não encontrado
Sintoma: A execução npx rayfin retorna "comando não encontrado".
Causa: A CLI não está instalada ou o npm não está em seu PATH.
Solution:
Verifique se Node.js e npm estão instalados:
node --version npm --versionReinstalar dependências:
npm install
Incompatibilidade de versão da CLI
Sintoma: Os comandos da CLI falham com erros inesperados após a atualização.
Causa: A versão da CLI armazenada em cache está desatualizada.
Solution:
Atualizar e reinstalar:
npm update --save
npm install
npx rayfin --version
Incompatibilidade entre versões global e local da CLI
Sintoma: Os comandos da CLI falham com erros inesperados em projetos.
Causa: Instalação global e local das versões da CLI e elas não correspondem.
Solução: Validar a versão local npm list @microsoft/rayfin-cli. Isso mostra a versão em node_modules do seu projeto atual. Verifique a versão global npm list -g @microsoft/rayfin-cli. Isso mostra a versão instalada em todo o sistema. Use npm uninstall -g com o pacote da CLI do Rayfin para remover a versão global e usar suas versões locais.
Questões de gestão secreta
Comando secreto não faz o pedido
Sintoma:npx rayfin secret set <NAME> Sai sem pedir um valor.
Causa: A entrada padrão não é um terminal interativo, ou a CI variável ambiente está definida como true. O comando usa um prompt interativo mascarado.
Solution:
Use uma das seguintes alternativas suportadas para criação de segredos não interativas:
Defina um segredo enviando seu valor para o comando:
Get-Content .\secret.txt | npx rayfin secret set <NAME> --stdinDefina múltiplos segredos de um arquivo de ambiente:
npx rayfin secret set --env-file .\secrets.env
Mantenha os segredos fora do histórico do seu shell e não faça commit de secret.txt nem de .\secrets.env no controle de versão.
Comando secreto devolve permissão negada
Sintoma:npx rayfin secret set ou npx rayfin secret list retorna um erro de permissão.
Causa: O aplicativo não está implantado, ou a conta logada não tem acesso ao workspace Fabric de destino.
Solution:
- Execute
npx rayfin uppara provisionar o app. - Execute
npx rayfin logine selecione uma conta com acesso ao espaço de trabalho. - Tente novamente o comando secreto.
Para mais informações, veja Gerenciar segredos de função.
Problemas de build e empacotamento
Falha no comando build
Sintoma: A implantação de hospedagem estática falha porque o comando de build não produziu nenhuma saída.
Causa: Erros de build ou comando de build mal configurado.
Solution:
Execute o comando de build manualmente:
npm run buildCorrija os erros relatados.
Verifique se a pasta de saída contém arquivos.
Pasta estática vazia
Sintoma: A implantação estática falha com o erro "pasta vazia".
Causa: O caminho configurado folder está incorreto.
Solution:
Verifique se o caminho em folder corresponde à saída da compilação: rayfin.yml
services:
staticHosting:
folder: dist # Verify this matches your build output
buildCommand: npm run build
Problemas de banco de dados
Falha na aplicação do esquema de banco de dados
Sintoma: Ao executar npx rayfin up db apply ou npx rayfin up db apply --force, ocorre uma falha.
Causa: O esquema no banco de dados remoto e o esquema definido no código do aplicativo não estão sincronizados. O código do aplicativo é a fonte oficial para um aplicativo Fabric.
Não modifique o esquema do banco de dados remoto pelo portal Fabric, SQL Server Management Studio (SSMS), a extensão SQL Server para Visual Studio Code ou outras ferramentas SQL. As seguintes alterações nas colunas de uma entidade de dados não são suportadas:
- Renomeando uma coluna.
- Mudando o tipo de dado de uma coluna.
- Removendo uma coluna.
A adição de uma coluna é suportada. Remover ou alterar uma coluna existente pode quebrar o aplicativo e sua implantação no Fabric.
Solution:
Reverta quaisquer alterações manuais no esquema remoto do banco de dados para que ele corresponda ao esquema do código do app.
Se um agente de codificação fez uma alteração de esquema não suportada no código do app, instrua o agente a reverter essa alteração.
Execute novamente o comando schema apply:
npx rayfin up db applyPara uma renomeação de coluna,
--forcepode permitir que a atualização do esquema seja concluída:npx rayfin up db apply --forceCaution
O uso
--forcepode causar perda permanente de dados. Revise as operações propostas e confirme que você aceita o risco de perda de dados antes de prosseguir.
Conexão recusada
Sintoma: As operações de dados falham com erros de conexão.
Causa: O contêiner de banco de dados não está em execução ou as verificações de integridade falharam.
Solution:
Examine os logs de contêineres:
docker compose logs -fReinicie os serviços.
Perda de dados após a reinicialização
Sintoma: Os dados desaparecem depois de parar e iniciar serviços.
Causa: Os volumes foram excluídos com --purge.
Solution:
Use --down em vez de --purge para preservar dados.
Limitações conhecidas
Para obter as limitações atuais e as soluções alternativas recomendadas, consulte:
-
count()não está disponível no cliente Fluent GraphQL — useresults.length. - Não há suporte para relações muitos para muitos: use uma entidade de junção explícita.
- Os objetos de sessão são opacos—verifique as propriedades
isAuthenticatedouuser. - Depois de habilitar ou desabilitar a autenticação no
rayfin.yml, reinicie o backend.
Obter ajuda
Se o problema persistir:
- Examine a documentação Fabric Apps.
- Verifique o GitHub repositório para problemas conhecidos.
- Envie um relatório de erro com logs detalhados e etapas de reprodução.