nuxt logo

Tradução da Documentação (Não Oficial)

useRuntimeConfig

Acesse variáveis de configuração em tempo de execução com o composable useRuntimeConfig.

Uso

app.vue
const config = useRuntimeConfig()
server/api/foo.ts
export default defineEventHandler((event) => {
  const config = useRuntimeConfig(event)
})
Veja também guide > going-further > runtime-config

Definir Configuração em Tempo de Execução

O exemplo abaixo mostra como definir uma URL base de API pública e um token de API secreto que é acessível apenas no servidor.

Devemos sempre definir variáveis runtimeConfig dentro de nuxt.config.

nuxt.config.ts
export default defineNuxtConfig({
  runtimeConfig: {
    // Chaves privadas estão disponíveis apenas no servidor
    apiSecret: '123',

    // Chaves públicas que são expostas ao cliente
    public: {
      apiBase: process.env.NUXT_PUBLIC_API_BASE || '/api'
    }
  }
})

Variáveis que precisam ser acessíveis no servidor são adicionadas diretamente dentro de runtimeConfig. Variáveis que precisam ser acessíveis tanto no cliente quanto no servidor são definidas em runtimeConfig.public.

Veja também guide > going-further > runtime-config

Acessar Configuração em Tempo de Execução

Para acessar a configuração em tempo de execução, podemos usar o composable useRuntimeConfig():

server/api/test.ts
export default defineEventHandler((event) => {
  const config = useRuntimeConfig(event)

  // Acessar variáveis públicas
  const result = await $fetch(`/test`, {
    baseURL: config.public.apiBase,
    headers: {
      // Acessar uma variável privada (disponível apenas no servidor)
      Authorization: `Bearer ${config.apiSecret}`
    }
  })
  return result
}

Neste exemplo, como apiBase é definido dentro do namespace public, ele é universalmente acessível tanto no lado do servidor quanto no lado do cliente, enquanto apiSecret é acessível apenas no lado do servidor.

Variáveis de Ambiente

É possível atualizar os valores de configuração em tempo de execução usando um nome de variável de ambiente correspondente prefixado com NUXT_.

Veja também guide > going-further > runtime-config

Usando o Arquivo .env

Podemos definir as variáveis de ambiente dentro do arquivo .env para torná-las acessíveis durante o desenvolvimento e build/generate.

.env
NUXT_PUBLIC_API_BASE = "https://api.localhost:5555"
NUXT_API_SECRET = "123"

Qualquer variável de ambiente definida dentro do arquivo .env é acessada usando process.env no aplicativo Nuxt durante o desenvolvimento e build/generate.

No tempo de execução em produção, você deve usar variáveis de ambiente da plataforma e .env não é usado.

Veja também guide > directory-structure > env

Namespace app

O Nuxt usa o namespace app na configuração em tempo de execução com chaves incluindo baseURL e cdnURL. Você pode personalizar seus valores em tempo de execução definindo variáveis de ambiente.

Este é um namespace reservado. Você não deve introduzir chaves adicionais dentro de app.

app.baseURL

Por padrão, o baseURL é definido como '/'.

No entanto, o baseURL pode ser atualizado em tempo de execução definindo o NUXT_APP_BASE_URL como uma variável de ambiente.

Então, você pode acessar este novo base URL usando config.app.baseURL:

/plugins/my-plugin.ts
export default defineNuxtPlugin((NuxtApp) => {
  const config = useRuntimeConfig()

  // Acessar baseURL universalmente
  const baseURL = config.app.baseURL
})

app.cdnURL

Este exemplo mostra como definir uma URL de CDN personalizada e acessá-la usando useRuntimeConfig().

Você pode usar um CDN personalizado para servir ativos estáticos dentro de .output/public usando a variável de ambiente NUXT_APP_CDN_URL.

E então acessar a nova URL do CDN usando config.app.cdnURL.

server/api/foo.ts
export default defineEventHandler((event) => {
  const config = useRuntimeConfig(event)

  // Acessar cdnURL universalmente
  const cdnURL = config.app.cdnURL
})
Veja também guide > going-further > runtime-config