Firebase启动报错:FirebaseApp.options中projectId需为字符串
解决Firebase启动错误:projectId must be a string in FirebaseApp.options
错误信息
node-express-firebase-main\node_modules\@firebase\component\dist\index.cjs.js:134 throw e; ^ Error [FirebaseError]: projectId must be a string in FirebaseApp.options at new FirestoreError (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\firestore\dist\index.node.cjs.js:153:28) at Function.Firestore.databaseIdFromApp (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\firestore\dist\index.node.cjs.js:22161:19) at new Firestore (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\firestore\dist\index.node.cjs.js:22035:42) at C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\firestore\dist\index.node.cjs.js:23398:16 at Component.instanceFactory (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\firestore\dist\index.node.cjs.js:23373:16) at Provider.getOrInitializeService (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\component\dist\index.cjs.js:222:39) at Provider.getImmediate (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\component\dist\index.cjs.js:120:33) at FirebaseAppImpl._getService (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\app\dist\index.node.cjs.js:230:49) at FirebaseAppImpl.firebaseAppImpl.<computed> [as firestore] (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\node_modules\@firebase\app\dist\index.node.cjs.js:442:39) at Object.<anonymous> (C:\Users\Vishnu Reddy\Desktop\FreshPrints\node-express-firebase-main\controllers\ApparelController.js:5:28) { code: 'invalid-argument', toString: [Function (anonymous)] }
问题根源
你的.env文件存在两个致命问题:
- 格式错误:
.env是环境变量配置文件,只能用KEY=VALUE的键值对格式,不能使用JavaScript的export default模块语法,Firebase无法识别这种格式的配置。 - 语法错误:
authDomain和messagingSenderId的引号未正确闭合,导致配置值读取异常。
修正后的.env文件
NODE_ENV=production #express server config PORT=8080 HOST=localhost HOST_URL=http://localhost:8080 #firebase database config FIREBASE_API_KEY=<API_KEY> FIREBASE_AUTH_DOMAIN=<AUTH_DOMAIN> FIREBASE_PROJECT_ID=<PROJECT_ID> FIREBASE_STORAGE_BUCKET=<STORAGE_bucket> FIREBASE_MESSAGING_SENDER_ID=<message_sender_id> FIREBASE_APP_ID=<APP_ID>
代码中读取配置的正确方式
确保你已经安装了dotenv包(npm install dotenv),然后在项目入口文件中加载环境变量,再初始化Firebase:
require('dotenv').config(); const firebase = require('firebase/app'); require('firebase/firestore'); const firebaseConfig = { apiKey: process.env.FIREBASE_API_KEY, authDomain: process.env.FIREBASE_AUTH_DOMAIN, projectId: process.env.FIREBASE_PROJECT_ID, storageBucket: process.env.FIREBASE_STORAGE_BUCKET, messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID, appId: process.env.FIREBASE_APP_ID }; firebase.initializeApp(firebaseConfig); const db = firebase.firestore();
内容的提问来源于stack exchange,提问作者mavilla vishnu vardhan
相关产品推荐
相关产品推荐

