如何在Vercel部署服务器安全存储密钥JSON文件并配置环境变量?
解决Vercel部署Next.js + GCP存储桶的凭据配置问题
核心思路
Vercel部署环境中无法直接存储JSON文件,也不需要通过文件路径引用GCP凭据。正确做法是将GCP服务账号JSON文件的完整内容作为环境变量的直接值,而非文件路径。
方法一:通过Vercel仪表盘配置
- 打开项目Vercel仪表盘,进入「Settings」→「Environment Variables」
- 点击「Add」新建环境变量:
- Name:设为
GOOGLE_CLOUD_KEY_FILE(和本地环境变量名一致) - Value:打开本地GCP服务账号JSON文件,复制全部内容粘贴进去
- 选择需应用该变量的环境(Production/Preview/Development)
- Name:设为
- 点击「Save」保存后重新部署项目
方法二:通过Vercel CLI配置
无需使用自定义参数,用标准命令将JSON文件内容导入为secret:
vercel secrets add GOOGLE_CLOUD_KEY_FILE "$(cat path/to/your/service-account.json)"
之后将该secret关联到项目环境变量:
vercel env add GOOGLE_CLOUD_KEY_FILE production
按提示选择刚创建的secret即可。
代码适配调整
在Next.js代码中区分本地和生产环境的凭据读取逻辑:
import { Storage } from '@google-cloud/storage'; let storage; if (process.env.NODE_ENV === 'development') { // 本地开发:通过文件路径读取 storage = new Storage({ keyFilename: process.env.GOOGLE_CLOUD_KEY_FILE, }); } else { // Vercel生产环境:解析环境变量中的JSON内容 storage = new Storage({ credentials: JSON.parse(process.env.GOOGLE_CLOUD_KEY_FILE), }); }
内容的提问来源于stack exchange,提问作者OWolf
相关产品推荐
相关产品推荐

