通过 100 多个技巧的集合学习 Nuxt!

useRuntimeConfig

使用 useRuntimeConfig 组合式函数访问运行时配置变量。

用法

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() 组合式函数

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 文件中设置环境变量,使其在开发构建/生成期间可访问。

.env
NUXT_PUBLIC_API_BASE = "https://api.localhost:5555"
NUXT_API_SECRET = "123"
.env 文件中设置的任何环境变量在开发构建/生成期间都可以在 Nuxt 应用中使用 process.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
})
文档 > 指南 > 深入了解 > 运行时配置 中阅读更多内容。