环境变量

环境变量是存储应用程序运行所需敏感信息的一种方式。这些信息可以是 API 密钥,也可以是数据库凭证等各种内容。Payload 允许你在配置文件和整个应用程序中轻松使用环境变量。

Next.js 应用

如果你使用 Next.js,除了创建 .env 文件外,无需额外设置。

要使用环境变量,请在项目根目录下添加 .env 文件:

project-name/
├─ .env
├─ package.json
├─ payload.config.ts

以下是 .env 文件的示例内容:

SERVER_URL=localhost:3000
DATABASE_URI=mongodb://localhost:27017/my-database

要在 Payload 配置中使用环境变量,可以直接从 process.env 访问它们:

import { buildConfig } from 'payload'

export default buildConfig({
  serverURL: process.env.SERVER_URL, // highlight-line
  // ...
})

客户端环境

出于安全和保护考虑,Admin Panel 默认不会在 客户端 打包中包含环境变量。但是 Next.js 提供了一种机制,可以在需要时将环境变量暴露给客户端打包。

如果你正在构建 Custom Component 并且需要从客户端访问环境变量,可以通过给变量添加 NEXT_PUBLIC_ 前缀来实现。

重要提示: 请谨慎选择提供给客户端代码的变量。逐一分析每个变量,确保不会意外泄露敏感信息。只包含那些可以公开明文读取的安全密钥。

例如,如果你有以下环境变量:

NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXX

这个密钥会自动提供给 Payload 的客户端打包,并可以在你的自定义组件中这样引用:

'use client'
import React from 'react'

const stripeKey = process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY // highlight-line

const MyClientComponent = () => {
  // 使用密钥进行某些操作

  return <div>My Client Component</div>
}

更多信息,请查阅 Next.js 文档

在 Next.js 之外使用

如果你在 Next.js 之外使用 Payload,我们建议使用 dotenv 包来处理来自 .env 文件的环境变量。这会自动将你的环境变量加载到 process.env 中。

要实现这一点,请尽可能在应用程序的高层级导入该包:

import dotenv from 'dotenv'
dotenv.config() // highlight-line

import { buildConfig } from 'payload'

export default buildConfig({
  serverURL: process.env.SERVER_URL,
  // ...
})

提示: 确保 dotenv 能找到你的 .env 文件。默认情况下,它会在项目根目录查找名为 .env 的文件。如果需要指定其他文件,请将路径传入配置选项。