# Solução de problemas

Diagnosticar rotas, permissões, renderização e assets desatualizados.

## Uma rota responde 404

Numa rota estática, verifique a pasta e o `index.tpl` dela, e que ela não tenha `route.inc`: uma rota estática com um `route.inc` que nunca aceita responde 404. Numa rota dinâmica, verifique se o `./nimbly routes:sync` a registrou, e siga o `route.inc`: os segmentos correspondidos, a validação e se ele chega a `router_accept()`.

## Um shortcode aparece como texto

Um shortcode que o Nimbly não consegue resolver é exibido como foi escrito. Verifique o nome do template ou da biblioteca e a pasta (`ext/tpl/<name>/index.tpl`, `ext/lib/<name>.php`). Um template chamado com parâmetros também não é exibido: defina as variáveis que ele lê antes da chamada. Uma variável que só é definida dentro da shell da página, como `site-name`, não está disponível numa rota sem `[#html#]`.

## Uma requisição à API é negada

Verifique se o usuário da integração tem acesso à API, se o token não expirou (10 minutos) e se a função tem a permissão. O campo `needs` da resposta lista as permissões que permitiriam a requisição.

## O conteúdo aparece errado

Verifique o tipo do campo no `.meta`, os valores por idioma dos campos traduzidos e o shortcode que exibe o campo: `[#get-html#]` para texto formatado, `[#get#]` para valores simples. O `[#fmt#]` lê uma variável com `var=`; `val=` recebe um valor literal. O markup condicional vai num template próprio, porque o `[#if#]` não tem forma de bloco.

## Um valor não muda

O `[#set#]` mantém um valor existente. Acrescente `overwrite` quando quiser substituí-lo. Uma lista que mostra valores antigos depois que um arquivo de registro foi editado à mão precisa de `./nimbly data:cache:clear`; uma busca que não encontra um registro depois de uma importação precisa de `./nimbly index:rebuild <resource>`.

## Os assets parecem desatualizados

Rode `./nimbly build` e verifique se o ambiente serve os novos `app.css` e `app.js`; a versão no endereço deles segue `ext/static/app.version`. Depois de uma atualização do core, o painel avisa quando os assets precisam de um novo build. Uma classe que nunca aparece geralmente vem de uma variável sem aspas.

## Jobs ou e-mails não rodam

Rode `./nimbly schedule:status` para ver se o agendador está rodando, e abra `/nb-admin/jobs` para ver o erro de um job falho. As configurações de e-mail ficam no `.env`; veja [E-mail](/pt/docs/guides/email/) e [Jobs e o agendador](/pt/docs/operate/jobs/).
