如何解决我的 Cloud Functions 项目中的新 ESLint 错误?

How do I resolve new ESLint errors in my Cloud Functions project?

另一天关于 Firebase 的另一个问题:

我对Firebase/node比较陌生。js/npm ...

我目前正在尝试使用 Firebase 为大学项目构建移动应用程序后端。我使用 node.js 和 编写,而不是在本地测试 我的函数,然后我使用 Firebase CLI 和 "firebase deploy" 部署它们。 一切都很顺利,直到我一小时前开始工作。我的代码中有一个小错误,我很容易修复。在同一个 "deploy-cycle" 中,Firebase CLI 向我展示了 firebase-tools 的可用更新,建议我使用

npm install -g firebase-tools

这就是我所做的,也是我悲剧的开始。 然后 CLI 推荐给 uninstall/reinstall

    npm uninstall -g @google-cloud/functions-emulator
    npm install -g @google-cloud/functions-emulator

所以我做到了。 然后我尝试部署我的功能(从本地 index.js)并收到以下警告:

错误:Firebase 配置变量不可用。请使用最新版本的 Firebase CLI 部署此功能

我使用 npm install -g firebase-tools 来更新 firebase CLI,但没有任何改变。

我认为最好备份我的旧项目并在新文件夹中初始化一个新项目并将其连接到我现有的 FB-Project 并复制粘贴我的旧 index.js 到新项目文件夹中的那个。 尝试部署这个新项目时,我收到了大量关于我的代码的错误和警告,例如:

18:4   error    Expected catch() or return                  promise/catch-or-return

还有更多,尽管我的编码函数之前运行良好。

所以我决定最好尝试修复旧项目中的错误。

有没有人建议在这种情况下该怎么做或在哪里可以找到这些神秘的 firebase 配置变量?我无法在网上找到任何解决我的问题的方法。 我真的很感激任何形式的帮助支持,因为我不知道该怎么做,而且我的大学也没有支持我这样做...

有关配置变量的错误消息要求您更新 Firebase CLI,您已经更新了。这很好。 (您可以忽略有关 @google-cloud/functions-emulator 的警告。)

当您创建一个新项目时,您可能在项目创建过程中选择了使用ESLint。提示会说:

Do you want to use ESLint to catch probable bugs and enforce style?

这是 Firebase CLI 自版本 3.17.0 以来的一项非常新的功能,您之前可能没有使用过 ESLint。

您看到的这些新错误是 ESLint 告诉您代码存在潜在问题。 Firebase 团队强烈建议您采纳这些警告和错误的建议并加以解决,这样您的代码就会出现更少的问题。

如果您现在根本无法使用 ESLint,您可以重新创建您的项目,但在系统提示您时选择以使用 ESLint。或者,您可以通过编辑 firebase.json 文件并删除运行 lint 命令的预部署脚本来在当前项目中禁用它。

看起来有两件事正在发生:

1) 您可能没有最新的 firebase 函数,这就是导致配置变量错误的原因。在再次部署之前,在您的函数文件夹中尝试 运行 以下内容:

npm i --save firebase-functions@0.8.1
npm i --save firebase-admin@5.8.1

2) "Expected catch() or return" 是一个 linter 错误,意味着您没有返回您的承诺链。 (这将导致您部署的函数出现超时错误)。所以你应该修改你的代码看起来更像:

return asynchronousTask().then(function() {
 ....
   return someValue;
});

在某些情况下,您可能希望全部认输,但暂时只想忽略 linting,直到您可以解决它所遇到的问题。

https://masteringjs.io/tutorials/eslint/ignore#:~:text=Disabling%20ESLint%20With%20a%20Comment&text=If%20you%20put%20%2F*%20eslint,the%20top%20of%20a%20file.

使用 .eslintignore 可以跳过可能尚未准备好通过 eslint 的整个文件,但您仍然需要部署进行测试或其他。