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.settingssnapshot.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 删除functionsfirebase 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 超时

Easy Firebase Cloud Functions 组织

在 Firebase Cloud Functions 中创建 PDF