# Solucionar problemas da Azion CLI

Esta página lista os sintomas que você pode encontrar com a [Azion CLI](/pt-br/documentacao/devtools/cli/), cada um com a causa e a correção. As perguntas, os caminhos de configuração e o login vêm primeiro. Em seguida vêm o desenvolvimento local, os builds e os deploys, e depois os comandos de recursos.

---

## Um comando para com EOF ou Failed to parse your response

Em um script ou em um job de CI, um comando para em uma pergunta e falha com uma linha como uma destas:

```text
? Enter the base URL to warm cache (e.g., https://example.com): Error: EOF
```

```text
? Enter the ID of the Application the Cache Setting is linked to: Error: Failed to parse your response. Check your response and try again. If the error persists, contact Azion support
```

O comando pergunta um valor que você não passou, e a pergunta precisa de um terminal. Com a entrada padrão fechada, nada responde a ela.

- **Passe o valor com a flag dele**: a pergunta indica o valor. Passe-o com a flag do comando, como `--url` em `azion warmup` ou `--application-id` em `azion list cache-setting`.
- **Adicione `-y` para as perguntas sim/não**: `-y` responde sim a todas as perguntas que terminam em `(Y/n)` ou `(y/N)`. Sem um terminal, uma pergunta `(Y/n)` recebe sim mesmo sem `-y`. Para o efeito sobre os perfis, consulte [Perguntas e confirmações](/pt-br/documentacao/devtools/cli/globals/#perguntas-e-confirmacoes).
- **Execute os seletores em um terminal**: `azion init` sempre pergunta o preset e o template em seletores, e nenhuma flag os define. Para todas as perguntas que ele faz, consulte [Azion CLI init](/pt-br/documentacao/devtools/cli/init/#perguntas).
- **Salve um token em vez de fazer login**: sem um terminal, `azion login` falha com `Error: Failed to get profile name`. Em automações, passe um personal token com a opção global `--token`.

Com todos os valores passados como flags, o comando é executado até o resultado sem nenhuma pergunta.

---

## Um comando recusa o caminho de configuração

Um comando com `-c` ou `--config` falha antes de ser executado:

```text
Error: Provide the correct path of the configuration file. Make sure the file is in .toml format, access the document for more information https://www.azion.com/en/documentation/devtools/cli/globals/#config
```

`--config` recebe um caminho que termina em `.toml`, não uma pasta. A CLI usa a pasta que contém esse caminho como pasta de configuração.

- **Aponte para um caminho .toml no nível superior da pasta**: passe `<config-folder>/settings.toml`. O arquivo não precisa existir.
- **Deixe as pastas de perfil fora do caminho**: com `<config-folder>/default/settings.toml`, a CLI considera `default` a pasta de configuração. Ela cria um perfil vazio ali e informa que você não está logado.

Este comando lê a conta de outra pasta de configuração:

```bash
azion whoami -c <config-folder>/settings.toml
```

O comando imprime a conta do perfil ativo nessa pasta:

```text
 Client ID: 1234u
 Email: you@example.com
 Active Profile: default
```

Para mais informações, consulte [Config](/pt-br/documentacao/devtools/cli/globals/#config).

---

## Um comando falha com You must be logged in

Um comando falha e pede que você faça login:

```text
🤔 To better understand user needs and enhance our application, we gather anonymous data. Do you agree to participate? (Y/n) Error: You must be logged in to use the 'whoami' command
```

A configuração que o comando lê não contém nenhuma conta. `azion reset` apaga o token, o client ID e o email. Um caminho de `--config` que termina no `settings.toml` de um perfil também cria um perfil vazio. Em uma configuração apagada, a pergunta sobre dados anônimos vem antes do erro.

- **Faça login**: execute `azion login` e escolha um método de login. Para os métodos, consulte [Azion CLI login](/pt-br/documentacao/devtools/cli/login/).
- **Salve um personal token**: passe `--token` com qualquer comando. A CLI salva o token no `settings.toml` do perfil, e todos os comandos seguintes o usam. Para um exemplo, consulte [Opções globais da Azion CLI](/pt-br/documentacao/devtools/cli/globals/#exemplos).
- **Verifique o caminho de configuração**: aponte `--config` para o nível superior da pasta de configuração, como [Um comando recusa o caminho de configuração](#um-comando-recusa-o-caminho-de-configuracao) explica.

Em seguida, `azion whoami` imprime o client ID, o email e o perfil ativo da sua conta.

---

## azion link falha com Invalid build preset name

`azion link --preset static` grava os arquivos do projeto e depois falha com `Error: exit status 1`. Com `--debug`, a saída indica a causa:

```text
Build process failed: Error: Invalid build preset name: 'static'
```

`static` não é um nome de preset. O preset de um site de arquivos HTML simples é `html`.

- **Remova o que o comando com falha gravou**: ele deixa as pastas `azion`, `.edge` e `.github` e um arquivo `.gitignore` na pasta do projeto. Exclua-os antes de vincular o projeto de novo.
- **Use o preset html**: o preset `html` serve os arquivos da pasta `www` do projeto. Os arquivos na raiz do projeto não são enviados, então mova-os para `www`.
- **Verifique os nomes dos presets**: `azion list presets` imprime os presets que `azion link` e `azion build` recebem. Para a lista, consulte [Azion CLI presets](/pt-br/documentacao/devtools/cli/recursos/presets/).

Este comando vincula a pasta atual como um site HTML, sem as perguntas:

```bash
azion link --name my-site --preset html --auto
```

O comando configura o projeto e lembra você de fazer o build dele:

```text
Project successfully configured
Sucessfully written to your .gitignore file
Successfully created GitHub Actions workflow file at .github/workflows/azion-deploy.yml
…
Please, remember to run azion build --preset [preset-name], in order to generate the necessary configuration files
```

O projeto fica vinculado com o preset `html`, e `azion build` e `azion deploy` o leem.

---

## azion dev falha porque a porta 3333 está em uso

`azion dev` falha com `Port 3333 is in use` depois que um `azion dev` anterior na mesma máquina foi interrompido.

`azion dev` executa o servidor de desenvolvimento em um processo filho, `node .../azbundler dev`. Interromper somente o processo `azion` deixa esse processo filho escutando na porta 3333.

- **Interrompa o grupo de processos inteiro**: interrompa o `azion dev` anterior junto com o processo filho dele. Interromper o grupo de processos libera a porta.
- **Sirva em outra porta**: `azion dev --port 4444` serve o projeto na porta 4444. Para a saída, consulte [Servir um site estático em outra porta](/pt-br/documentacao/devtools/cli/dev-comando/#servir-um-site-estatico-em-outra-porta).

O novo servidor imprime `Function running on port 0.0.0.0:3333, url: http://localhost:3333`, com a porta que você passou no lugar de `3333`.

---

## azion build pede para instalar as dependências com pnpm

`azion build` em um projeto de framework falha na primeira etapa:

```text
[Azion] [Build] › ✖  error     Please install dependencies using pnpm
```

As dependências do projeto não estão instaladas. Isso acontece quando `azion init` para antes da pergunta sobre as dependências, como com um template que primeiro pede uma credencial de outro serviço. Por exemplo, o template *Cosmic - Agency Website* do preset *Next* pede o slug de um bucket do Cosmic.

- **Escolha um template boilerplate**: no seletor de templates de `azion init`, selecione um boilerplate, como *Next JS Static Boilerplate (14.1.4)*. Com `-y`, `azion init` instala as dependências dele.
- **Instale as dependências você mesmo**: instale as dependências do projeto com pnpm, como a mensagem pede, e execute `azion build` de novo.

O build termina com `Your Application was built successfully`.

---

## Um build de framework para na pergunta do próprio framework

Um comando de um projeto de framework aguarda uma pergunta das ferramentas do framework ou falha sem um terminal:

```text
[Azion] [Build] › ✖  error     Command 'npm exec opennextjs-azion build -- ' failed with code 13
```

Algumas ferramentas de framework fazem as suas próprias perguntas durante o build ou a instalação das dependências. Sem um terminal, nada responde a elas, e `-y` não responde à pergunta do Nuxt.

- **Responda à pergunta sobre open-next.config.ts em um terminal**: com o preset *OpenNextJS*, `azion build` pergunta `Missing required open-next.config.ts file, do you want to create one? (Y/n)`. Execute o build em um terminal e responda sim. O build cria o arquivo e é concluído.
- **Responda à pergunta de telemetria do Nuxt em um terminal**: com o preset *Nuxt*, a instalação das dependências de `azion init` pergunta `Are you interested in participating?` sobre os dados de uso do Nuxt. Execute `azion init` em um terminal e responda à pergunta.

O comando passa da pergunta, e o build termina com `Your Application was built successfully`.

---

## A URL do deploy responde There's nothing here yet

Depois de `azion deploy`, o domínio que o comando imprime responde `404` com uma página intitulada `There's nothing here yet`.

O deploy ainda não chegou a todas as localidades. O primeiro deploy pode levar vários minutos para responder em todas as localidades; os deploys seguintes levam cerca de dois minutos.

- **Aguarde e tente de novo**: faça uma nova requisição ao domínio depois de alguns minutos, antes de diagnosticar o deploy. Uma localidade pode responder `200` enquanto outra ainda responde `404`.
- **Acompanhe o deploy no Azion Console**: um deploy remoto imprime uma linha que começa com `Please visit https://console.azion.com/create/deploy/`. Quando o navegador não abrir, abra esse link para acompanhar o deploy.

O domínio responde `200` com o seu conteúdo. Para a saída do deploy, consulte [Azion CLI deploy](/pt-br/documentacao/devtools/cli/deploy/).

---

## Uma exclusão remove mais do que a aplicação

`azion delete application` imprime `Cascade deleting resources` e exclui outros recursos do projeto junto com a aplicação.

Qualquer flag `--cascade` ativa a exclusão em cascata, inclusive `--cascade=false`. A exclusão em cascata exclui os recursos que o `azion/azion.json` do diretório atual lista.

Em uma pasta de projeto, este comando exclui o workload, a aplicação e a function que o `azion/azion.json` lista:

```bash
azion delete application --cascade
```

O comando indica cada recurso que exclui:

```text
Cascade deleting resources
Deleting workload with ID 1234567903
Deleting application with ID 1234567893
Deleting function with ID 12360
Remote resources deleted successfully
```

Fora de uma pasta de projeto, a mesma linha é seguida de `Error: Failed to open the azion.json file`, e o comando mantém a aplicação.

> **Atenção**
>
> As exclusões de recursos não fazem pergunta, com ou sem `-y`. Verifique o diretório atual antes de passar `--cascade`.

Para excluir somente a aplicação, execute `azion delete application --application-id <application-id>` sem nenhuma flag `--cascade`. Para as flags, consulte [Azion CLI application](/pt-br/documentacao/devtools/cli/recursos/application/#excluir).

O comando imprime `Application <application-id> was successfully deleted`, e o connector e o bucket do projeto continuam existindo.

---

## Uma atualização informa sucesso e o valor não muda

`azion update dns-zone --active false` imprime `DNS zone <zone-id> was updated`, mas a zona continua ativa.

`--active` em `dns-zone` e `--enabled` em `dnssec` são booleanas: o `--help` as imprime sem tipo. Uma flag booleana recebe o valor depois de um sinal de igual. Com um espaço, o comando mantém o valor sem mudança.

Para desativar a zona DNS, escreva o valor depois de um sinal de igual:

```bash
azion update dns-zone --zone-id <zone-id> --active=false
```

```text
DNS zone <zone-id> was updated
```

Em seguida, `azion describe dns-zone --zone-id <zone-id> --format json` informa `"active": false`. Para mais informações, consulte [Flags booleanas](/pt-br/documentacao/devtools/cli/globals/#flags-booleanas).

---

## Um exemplo do help falha com unknown flag

Um exemplo copiado do `--help` falha antes de ser executado:

```text
Error: unknown flag: --in
```

O exemplo usa uma flag que o comando não aceita. O `--help` lista as flags do comando em `LOCAL OPTIONS`.

- **Use as flags da tabela do comando**: cada página de recurso lista as flags de todos os comandos. Para as páginas, consulte [Comandos de recursos](/pt-br/documentacao/devtools/cli/recursos/).
- **Atualize a partir de um arquivo JSON com --file**: passe o arquivo com `--file` e o ID com a flag dele. Algumas atualizações não leem o ID do arquivo. Para o formato do arquivo, consulte [Azion CLI function](/pt-br/documentacao/devtools/cli/recursos/function/#usar-um-arquivo-json).

Este comando atualiza a function com ID `12370` a partir de um arquivo JSON:

```bash
azion update function --function-id 12370 --file fn-update.json
```

O comando imprime `Updated function with ID 12370`, e a function mantém os campos que o arquivo omite.

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): A pasta de configuração, o token, as flags booleanas e as respostas sim/não das quais várias correções dependem.
- [Primeiros passos com a Azion CLI](/pt-br/documentacao/devtools/cli/primeiros-passos.md): Todas as perguntas de um primeiro projeto, do login a uma function após o deploy.
- [Azion CLI deploy](/pt-br/documentacao/devtools/cli/deploy.md): O que um deploy remoto e um deploy local imprimem, e quanto tempo um deploy leva para responder.
- [Comandos de recursos](/pt-br/documentacao/devtools/cli/recursos.md): As flags de todos os comandos create, list, describe, update e delete.
