环境变量
环境变量是存储应用程序运行所需敏感信息的一种方式。这些信息可以是 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
的文件。如果需要指定其他文件,请将路径传入配置选项。