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

时间:2018-01-23 18:05:34

标签: javascript firebase google-cloud-functions firebase-tools

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

我对Firebase / node.js / npm ...

相对较新

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

npm install -g firebase-tools

这就是我所做的以及悲剧开始的地方。 然后CLI建议卸载/重新安装

    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配置变量?我无法在网上找到解决问题的方法。 我非常感谢任何帮助支持,因为我不知道该怎么做,我的大学没有这样的支持......

3 个答案:

答案 0 :(得分:6)

有关配置变量的错误消息要求您更新Firebase CLI。那没关系。 (你可能忽略了关于@ google-cloud / functions-emulator的警告。)

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

  

您是否想使用ESLint来捕获可能的错误并强制执行样式?

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

您看到的那些新错误是ESLint告诉您代码存在潜在问题。 Firebase团队强烈建议您接受这些警告和错误的建议并解决它们,以便您的代码可以减少问题。

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

答案 1 :(得分:1)

看起来有两件事情在那里:

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

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

2)“预期的catch()或返回”是一个linter错误,意味着你没有返回你的promise链。 (这将导致部署函数中的超时错误)。所以你应该修改你的代码看起来更像:

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

答案 2 :(得分:0)

在某些情况下,您可能想一起认输,但只想暂时忽略掉毛,直到您能解决它所遇到的问题。

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,但您仍然需要部署以进行测试或其他什么。