Javascript 如何解决云功能项目中的新ESLint错误?

Javascript 如何解决云功能项目中的新ESLint错误?,javascript,firebase,google-cloud-functions,firebase-tools,Javascript,Firebase,Google Cloud Functions,Firebase Tools,另一天,关于Firebase的另一个问题: 我对Firebase/node.js/npm比较陌生 我目前正在尝试为一个大学项目使用Firebase构建一个移动应用程序后端。我使用node.js和编写,而不是在本地测试我的函数,然后使用Firebase CLI和“Firebase deploy”部署它们。 直到我一小时前开始工作,一切都很顺利。我的代码中有一个小错误,我可以很容易地修复它。在同一个“部署周期”中,Firebase CLI向我展示了Firebase工具的可用更新,建议我使用 npm

另一天,关于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
所以我做了。 然后我尝试部署我的函数(从local index.js)并收到以下警告:

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

我使用了
npm安装-g firebase工具
来更新firebase CLI,但没有任何更改

我认为备份我的旧项目并在新文件夹中初始化一个新项目,然后将其连接到我现有的FB项目,然后将我的旧index.js内容复制粘贴到新项目文件夹中是个好主意。 在尝试部署此新项目时,我收到了大量与代码有关的错误和警告,如:

18:4   error    Expected catch() or return                  promise/catch-or-return
还有更多,尽管我的编码函数以前工作得很好

因此,我决定最好尝试用旧项目修复错误

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

关于配置变量的错误消息要求您更新Firebase CLI,您确实这样做了。那很好。(您可能忽略了关于@google cloud/functions emulator的警告。)

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

您想使用ESLint捕获可能的bug并强制执行样式吗

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

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


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

看起来有两种情况:

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

npm i --save firebase-functions@0.8.1
npm i --save firebase-admin@5.8.1
2) “Expected catch()或return”是一个linter错误,表示您没有返回承诺链。(这将导致部署的函数出现超时错误)。因此,您应该修改代码,使其看起来更像:

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

在某些情况下,你可能想一起认输,但只是想暂时忽略绒线,直到你能够解决它所存在的问题


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

如果我尝试更新项目文件夹中的firebase函数和firebase admin,CLI将始终尝试读取位于我的配置文件文件夹中的package.json文件,但唯一存在的是一个package-lock.json。但是,在我的项目文件夹中,存在一个名为package.json file的文件。是否需要更改“更新命令”中的目录?我正在项目文件夹的terminal中运行命令。很抱歉,我无法再编辑第一条注释。我找到了Dougs answer的短期解决方案,但如果您能对我的第一条评论有所了解,以便更好地了解firebase/node.js的工作实践,那就太好了。我在所有函数中使用异步函数,以确保没有发生超时错误。提前谢谢劳伦!我很想给你一个提升的投票,但我错过的名誉点不幸不允许我。。。!!就这样。出于某种原因,我的大脑决定让ESLint捕捉可能的bug并强制执行样式将是一个好主意,因为我不知道这将导致即将出现的错误/警告。我建立了一个新项目,并将其与我现有的fb项目连接起来,最终我能够再次部署这个新本地项目的功能。在不久的将来,我将重点关注如何更健壮地修改函数和使用try/catch,但现在重要的是,我可以工作,我们可以测试前端。谢谢你的回答,真的帮了大忙!我尝试删除predeploy脚本,效果很好。只是想问我是否应该在发布之前解决eslint错误?它们是识别错误和换行错误