升级firebase-tools、firebase-admin和firebase-functions后环境变量加载失败的技术咨询
升级firebase-tools、firebase-admin和firebase-functions后环境变量加载失败的技术咨询
最近我把项目里的firebase-tools升级到了14.10.1版本,firebase-admin升到13.4.0,firebase-functions升到6.3.2版本。升级之后不管是部署函数还是在本地模拟器运行都出问题了,一直提示环境变量未定义。
我这个项目有好几个不同的环境,对应的环境变量文件命名都是.env.<project-alias>的格式,这套配置已经正常运行好几年了。我不确定是不是Firebase的新版本需要额外的步骤来加载这些环境文件,而且在官方文档里也没看到相关的更新说明。
之前我一直是按照官方提供的多环境变量部署步骤来加载对应项目的环境文件的,日志里也显示了“Loading env file ...”的信息,说明系统确实尝试去加载环境文件了。后来Copilot建议我用dotenv来手动加载环境文件,虽然按照它的建议修改后现在能正确加载对应的环境文件了,但我总觉得不该加这么多额外代码——就是这段:
// Load environment variables from .env file based on Firebase project const path = require('path') const fs = require('fs') // Determine which env file to load based on Firebase project let envFile = '.env' if (process.env.FIREBASE_CONFIG) { try { const firebaseConfig = JSON.parse(process.env.FIREBASE_CONFIG) const projectId = firebaseConfig.projectId // Map Firebase project IDs to env files const projectToEnvMap = { 'myapp-dev-vg': '.env.vg-dev', 'myapp-dev-mh': '.env.mh-dev', 'myapp-staging': '.env.staging', 'myapp-prod': '.env.myapp-prod', } const mappedEnvFile = projectToEnvMap[projectId] if (mappedEnvFile && fs.existsSync(path.join(__dirname, mappedEnvFile))) { envFile = mappedEnvFile console.log( `Loading environment from ${envFile} for project ${projectId}` ) } else { console.log( `No specific env file found for project ${projectId}, using default .env` ) } } catch (error) { console.log('Could not parse FIREBASE_CONFIG, using default .env file') } } require('dotenv').config({ path: path.join(__dirname, envFile) })
我感觉自己是不是漏了什么,按理说不应该需要加这么多代码才能加载正确的配置文件。想问问大家,Firebase最新版本里加载项目特定环境文件的步骤是不是有变化了?
内容来源于stack exchange
相关产品推荐
相关产品推荐

