我正在使用使用Typescript的Firebase云功能,并且一切正常。在我的代码中,我创建了DocumentReference
和GeoPoint
类型的变量之一,这就是make vs代码导入的变量
import { GeoPoint, DocumentReference } from '@google-cloud/firestore'
function offsetSlightly(location:GeoPoint) {
//some code here
return new GeoPoint(latitude, longitude)
}
所以我需要添加使用命令
添加的那个节点模块。 npm install @google-cloud/firestore
当我尝试部署时,每件事看起来都很好,我得到了很多重复的标识符,例如DocumentData,UpdateData,GeoPoint等。
错误:
node_modules/firebase-admin/node_modules/@google-cloud/firestore/types/firestore.d.ts:28:15 - error TS2300: Duplicate identifier 'DocumentData'.
28 export type DocumentData = {[field: string]: any};
那是我的package.json {
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"main": "lib/index.js",
"dependencies": {
"@google-cloud/firestore": "^0.14.1",
"firebase-admin": "^5.12.1",
"firebase-functions": "^1.0.4",
"nodemailer": "^4.6.4",
"twilio": "^3.16.0"
},
"devDependencies": {
"tslint": "^5.10.0",
"typescript": "^2.9.2"
},
"private": true
}
我不知道问题所在,但我认为这在软件包中有些冲突。我是android开发人员,对Node有一点经验。有帮助吗?
答案 0 :(得分:3)
与其从独立的Firestore SDK中导入类,不如在Firebase Admin SDK的Firestore上创建类型别名:
import * as admin from 'firebase-admin';
type GeoPoint = admin.firestore.GeoPoint
type DocumentReference = admin.firestore.DocumentReference
答案 1 :(得分:2)
您使用了错误的导入。
在云功能中,您可以使用admin SDK从Firestore获取数据。
这里是在集合中添加GeoPoint的示例 admin.firestore()。collection('mycollection')。add({location:new admin.firestore.GeoPoint(1.0,1.0)});
这是导入语句
从“ firebase-admin”以管理员身份导入*;
答案 2 :(得分:1)
我有同样的问题。在“功能/节点模块/ firebase-admin”中创建了一个单独的node_modules。我手动删除了它并解决了它。 我希望这可能是解决方案之一。