透過 100+ 個技巧的集合學習 Nuxt!

useRuntimeConfig

使用 useRuntimeConfig composable 存取執行階段設定變數。

用法

app.vue
<script setup lang="ts">
const config = useRuntimeConfig()
</script>
server/api/foo.ts
export default defineEventHandler((event) => {
  const config = useRuntimeConfig(event)
})
文件 > 指南 > 深入探討 > 執行階段設定 中閱讀更多資訊。

定義執行階段設定

以下範例示範如何設定公開 API 基礎 URL 和僅能在伺服器上存取的私密 API 權杖。

我們應該始終在 nuxt.config 內定義 runtimeConfig 變數。

nuxt.config.ts
export default defineNuxtConfig({
  runtimeConfig: {
    // Private keys are only available on the server
    apiSecret: '123',

    // Public keys that are exposed to the client
    public: {
      apiBase: process.env.NUXT_PUBLIC_API_BASE || '/api'
    }
  }
})
需要在伺服器上存取的變數直接新增在 runtimeConfig 內。需要在用戶端和伺服器端都存取的變數則定義在 runtimeConfig.public 中。
文件 > 指南 > 深入探討 > 執行階段設定 中閱讀更多資訊。

存取執行階段設定

若要存取執行階段設定,我們可以使用 useRuntimeConfig() composable

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

  // Access public variables
  const result = await $fetch(`/test`, {
    baseURL: config.public.apiBase,
    headers: {
      // Access a private variable (only available on the server)
      Authorization: `Bearer ${config.apiSecret}`
    }
  })
  return result
}

在此範例中,由於 apiBase 是在 public 命名空間中定義的,因此在伺服器端和用戶端上都可普遍存取,而 apiSecret 僅能在伺服器端存取

環境變數

可以使用與 NUXT_ 作為前綴的相符環境變數名稱來更新執行階段設定值。

文件 > 指南 > 深入探討 > 執行階段設定 中閱讀更多資訊。

使用 .env 檔案

我們可以在 .env 檔案內設定環境變數,使其在開發build/generate 期間可存取。

.env
NUXT_PUBLIC_API_BASE = "https://api.localhost:5555"
NUXT_API_SECRET = "123"
開發build/generate 期間,Nuxt 應用程式中使用 process.env 存取在 .env 檔案內設定的任何環境變數。
生產執行階段中,您應該使用平台環境變數,而不會使用 .env
文件 > 指南 > 目錄結構 > Env 中閱讀更多資訊。

app 命名空間

Nuxt 在執行階段設定中使用 app 命名空間,其索引鍵包括 baseURLcdnURL。您可以透過設定環境變數在執行階段自訂其值。

這是保留的命名空間。您不應在 app 內引入其他索引鍵。

app.baseURL

預設情況下,baseURL 設定為 '/'

但是,可以透過將 NUXT_APP_BASE_URL 設定為環境變數,在執行階段更新 baseURL

然後,您可以使用 config.app.baseURL 存取這個新的基礎 URL

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

  // Access baseURL universally
  const baseURL = config.app.baseURL
})

app.cdnURL

此範例示範如何設定自訂 CDN URL 並使用 useRuntimeConfig() 存取它們。

您可以使用自訂 CDN 來服務 .output/public 內的靜態資產,方法是使用 NUXT_APP_CDN_URL 環境變數。

然後使用 config.app.cdnURL 存取新的 CDN URL。

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

  // Access cdnURL universally
  const cdnURL = config.app.cdnURL
})
文件 > 指南 > 深入探討 > 執行階段設定 中閱讀更多資訊。