Firebase Cloud Functions TS - 未解析的函数/变量/方法
Posted
技术标签:
【中文标题】Firebase Cloud Functions TS - 未解析的函数/变量/方法【英文标题】:Firebase Cloud Functions TS - Unresolved functions/variables/methods 【发布时间】:2019-03-29 05:03:21 【问题描述】:我使用 IDE WebStorm,但在编写云函数时遇到了一些困难。看起来 WebStorm 无法识别 firebase 的某些方法/函数/变量。
例子:
深红色表示无法解析该属性。
如您所见,它无法识别db.settings
、snapshot.data()
、db.doc()
和snapshot.id
。
我的 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":
"firebase-admin": "~6.0.0",
"firebase-functions": "^2.0.3"
,
"devDependencies":
"tslint": "~5.8.0",
"typescript": "~2.8.3"
,
"private": true
到目前为止我尝试过的都没有成功:
无效并重新启动 重新安装 node_modules 取消排除包@google-cloud
删除functions
和firebase init functions
- 工作了一会儿,然后找不到源。
试图取消排除 node_modules
只是为了它。
未排除的包:
@google-cloud @types (+ @types/*) firebase 管理员 firebase 功能 tslint 打字稿PS - 我不知道它是否与父文件夹有关,但我在这个项目中使用 Ionic 4,而在另一个项目中我只使用 Angular 并且它表现良好(两个函数文件夹都有确切的相同的设置)。
更新 1 - 我尝试在 PC 和 MacOS(不同的设备)上运行这个项目,并且在它们两者中都发生了这种情况。不同的项目不会出现此问题。
【问题讨论】:
如果npm run build
一切正常,那么问题出在 webstorm 上。
它输出一个错误。但它与父目录(应用程序本身)有关,但实际上,根本没有错误。我不得不将构建脚本更改为tsc --skipLibCheck
。
我仅使用“firebase init”功能进行了测试。 VS 代码都很好,你的 package.json 没有问题。仅供参考,firebase-admin 模块是指 @google-cloud/firestore 类型。我想你的 webstorm 没有正确解析。
@JohnCho 我认为问题与父目录有关,而不是与函数文件夹有关,因为我在不同的应用程序中有完全相同的文件夹,Webstorm 可以正确解析它
@Eliya Cohen 更简单的调试方法来自简单的代码。我刚刚确认您的 package.json 文件没有问题。正如您所提到的,webstorm 与其他项目一起使用。那么你的代码与 webstorm 不兼容。能否提供源代码?
【参考方案1】:
问题在于 FireStore 函数实际上是在 @google-cloud/firestore
插件中声明的,该插件作为 firebase-admin
的依赖项安装,但未在您的项目 package.json
中列出。 WebStorm 自动从索引中排除所有间接依赖项以获得更好的性能,因此代码分析器无法使用函数定义。要解决此问题,请右键单击 项目 工具窗口中的 node_modules/@google-cloud
文件夹,然后选择 将目录标记为/未排除。这应该可以解决问题:
【讨论】:
另外,尝试将鼠标悬停在设置上。它也会显示它的来源吗? 是的 - 查看更新的答案。请在取消排除文件夹后尝试使缓存失效 仍然没有运气。我有另一个具有相同依赖项的项目,它在那里工作。我尝试比较 node_modules,它看起来一样。以上是关于Firebase Cloud Functions TS - 未解析的函数/变量/方法的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中为 Firebase 使用 Cloud Functions
Cloud Functions for Firebase 超时
Firebase Cloud Functions https.onCall 完成状态码:204
Cloud Functions for Firebase onWrite 超时