admin.firestore不是在使用google云function和node.js时的function

这是node.js index.js文件的头文件:

const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); var db = admin.firestore(); 

这是侦听firestore更改的node.js函数:

 exports.myFoo = functions.firestore .document('foo/{bar}') .onWrite(event => { // do stuff } 

这是在package.json文件中:

  "dependencies": { "firebase-admin": "^5-.4.2", "firebase-functions": "^0.7.1", "firestore": "^1.1.6" }, 

当我尝试做一个“firebase部署”命令这是我得到的错误:

错误:分析函数触发器时发生错误。
TypeError:admin.firestore不是一个函数

askFirebase

我能够重现错误和蛮力的解决scheme。 我对npm了解不多,不能提供解决scheme为什么能起作用的完整解释。

我原来的package.json包含:

  "dependencies": { ... "firebase-admin": "^4.2.1", "firebase-functions": "^0.7.1", ... }, 

按照文档中的build议 ,我在函数文件夹中运行了这两个命令:

 npm install -g firebase-tools npm install firebase-functions@latest --save 

我也试过:

 npm install --save firebase-admin npm upgrade 

我反复收到这些错误消息:

 +-- UNMET PEER DEPENDENCY firebase-admin@4.2.1 npm WARN firebase-functions@0.7.1 requires a peer of firebase-admin@~5.4.2 but none was installed. 

我想firebase-admin需要更新,但不能实现。 所以我编辑了依赖文件来删除这一行:

 "firebase-admin": "^4.2.1" 

然后运行npm install --save firebase-admin再次保存npm install --save firebase-admin 。 有了这个, package.json包含"firebase-admin": "^5.4.2"版本"firebase-admin": "^5.4.2"var db = admin.firestore(); 编译没有错误。