【问题标题】:Firebase Cloud Functions TS - Unresolved functions/variables/methodsFirebase Cloud Functions TS - 未解析的函数/变量/方法
【发布时间】: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 不兼容。能否提供源代码?

标签: typescript firebase google-cloud-functions webstorm firebase-admin


【解决方案1】:

问题在于 FireStore 函数实际上是在 @google-cloud/firestore 插件中声明的,该插件作为 firebase-admin 的依赖项安装,但未在您的项目 package.json 中列出。 WebStorm 自动从索引中排除所有间接依赖项以获得更好的性能,因此代码分析器无法使用函数定义。要解决此问题,请右键单击 项目 工具窗口中的 node_modules/@google-cloud 文件夹,然后选择 将目录标记为/未排除。这应该可以解决问题:

【讨论】:

  • 另外,尝试将鼠标悬停在设置上。它也会显示它的来源吗?
  • 是的 - 查看更新的答案。请在取消排除文件夹后尝试使缓存失效
  • 仍然没有运气。我有另一个具有相同依赖项的项目,它在那里工作。我尝试比较 node_modules,它看起来一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2017-08-19
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
相关资源
最近更新 更多