我们的数据库使用Firestore,并使用Vercel的Next.js托管。我们想要一个完全隔离的开发/生产数据库,因此我们在Firebase上建立了两个独立的项目,这为每个项目提供了两个不同的API密钥。
根据Vercel的生产/预览/开发设置(可能基于NEXT_PUBLIC_VERCEL_ENV
),在两种配置之间切换的最佳方式是什么?
我们尝试创建两个包含配置的不同.json文件,并基于NEXT_PUBLIC_VERCEL_ENV
环境变量进行切换,但这似乎会在本地开发版本中的客户端呈现页面上为环境变量生成一个undefined
值。
const firebaseDevConfig = await import("./configs/dev-config.json");
const firebaseProdConfig = await import("./configs/prod-config.json");
const firebaseConfig =
process.env.NEXT_PUBLIC_VERCEL_ENV === "production"
? firebaseProdConfig
: firebaseDevConfig;
更新:NEXT_PUBLIC_VERCEL_ENV
似乎在部署的预览版本中返回了预期值"preview"
。我如何让它在我的本地开发版本中返回“development”?
2条答案
按热度按时间bttbmeg01#
您使用的是.local.env文件还是仅使用.env文件?另外,我建议设置firebase CLI和模拟器,请参阅--〉https://firebase.google.com/docs/emulator-suite
v64noz0r2#
通过将开发配置作为字符串存储在
.env
文件中,并通过Vercel的 Jmeter 板设置生产环境变量,我设法解决了这个问题。最后的代码看起来像这样:
其中
NEXT_PUBLIC_FIREBASE_CONFIG
是包含dev/prod Firebase配置(JSON字符串)的环境变量的名称。