部署Firebase Cloud Functions遇命名空间冲突问题求助
问题说明
按照Firebase官方V2版本入门教程部署Cloud Functions时,执行firebase deploy命令触发TS6200错误,提示多个Firestore相关标识符存在定义冲突。
代码示例
import {logger} from "firebase-functions"; import {onDocumentCreated} from "firebase-functions/v2/firestore"; exports.makeuppercase = onDocumentCreated("/configurations/{id}", (event) => { // 获取写入Firestore的当前值 const original = event.data?.data().original; // 通过event.params访问{id}参数 logger.log("test", event.params, original); });
package.json配置
{ "name": "functions", "scripts": { "lint": "eslint --ext .js,.ts .", "build": "tsc", "build:watch": "tsc --watch", "serve": "npm run build && firebase emulators:start --only functions", "shell": "npm run build && firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "engines": { "node": "16" }, "main": "lib/index.js", "dependencies": { "firebase-admin": "^10.0.2", "firebase-functions": "^3.18.0" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.12.0", "@typescript-eslint/parser": "^5.12.0", "eslint": "^8.9.0", "eslint-config-google": "^0.14.0", "eslint-plugin-import": "^2.25.4", "firebase-functions-test": "^0.2.0", "typescript": "^4.5.4" }, "private": true }
错误信息
node_modules/@google-cloud/firestore/types/firestore.d.ts:23:1 - error TS6200: Definitions of the following identifiers conflict with those in another file: DocumentData, UpdateData, Firestore, GeoPoint, Transaction, BulkWriter, BulkWriterError, WriteBatch, SetOptions, WriteResult, DocumentReference, DocumentSnapshot, QueryDocumentSnapshot, OrderByDirection, WhereFilterOp, Query, QuerySnapshot, DocumentChangeType, CollectionReference, CollectionGroup, QueryPartition, FieldValue, FieldPath, Timestamp, BundleBuilder, v1beta1, v1, OK, CANCELLED, UNKNOWN, INVALID_ARGUMENT, DEADLINE_EXCEEDED, NOT_FOUND, ALREADY_EXISTS, PERMISSION_DENIED, RESOURCE_EXHAUSTED, FAILED_PRECONDITION, ABORTED, OUT_OF_RANGE, UNIMPLEMENTED, INTERNAL, UNAVAILABLE, DATA_LOSS, UNAUTHENTICATED, FirebaseFirestore
解决方案
1. 升级核心依赖版本
你当前使用的firebase-functions是3.18.0,而V2版本的Cloud Functions要求依赖版本至少为4.x,同时firebase-admin也需要升级到兼容版本:
- 修改package.json中的依赖字段:
"dependencies": { "firebase-admin": "^11.11.0", "firebase-functions": "^4.5.0" } - 执行命令更新依赖:
npm install
2. 临时规避:修改TypeScript配置
如果升级依赖后仍有冲突,可以在tsconfig.json中添加类型检查跳过配置,临时绕过错误:
{ "compilerOptions": { "skipLibCheck": true, // 保留原有其他配置 } }
注意:这是临时方案,优先推荐通过升级依赖从根源解决问题。
3. 清理依赖缓存(可选)
若升级后问题依旧,尝试清理缓存并重新安装依赖:
npm cache clean --force rm -rf node_modules package-lock.json npm install
本质原因
该错误是由于不同版本的Firestore类型定义文件(@google-cloud/firestore与firebase-functions/firebase-admin内置的Firestore类型)重复定义导致冲突,升级到V2版本要求的兼容依赖即可解决。
内容的提问来源于stack exchange,提问作者jjuser19jj

