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

sqxo8psd  于 2023-09-29  发布在  Java
关注(0)|答案(4)|浏览(85)

关于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配置变量?我在网上找不到任何解决问题的方法。我真的很感激任何形式的帮助支持,因为我不知道该怎么做,我没有从我的大学做这件事的支持…

o4hqfura

o4hqfura1#

有关配置变量的错误消息要求您更新Firebase CLI,您已更新。这也没什么(您可以忽略有关@google-cloud/functions-emulator的警告。
创建新项目时,您可能选择在项目创建过程中使用ESLint。提示会说:
你想使用ESLint来捕捉可能的bug并强制样式吗?
这是Firebase CLI自3.17.0版以来的一个非常新的功能,您以前可能没有使用过ESLint。
您看到的这些新错误是ESLint告诉您代码中存在潜在问题。Firebase团队强烈建议您接受这些警告和错误的建议并解决它们,以便您的代码具有更少的问题。
如果您现在无法使用ESLint,您可以重新创建项目,但在系统提示时选择以使用ESLint。或者,您可以通过编辑firebase.json文件并删除运行lint命令的预部署脚本,在当前项目中禁用它。

gz5pxeao

gz5pxeao2#

在某些情况下,你可能想扔在毛巾所有在一起,但只是想忽略掉毛的时刻,直到你可以解决的问题,它是有。
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,但您仍然需要部署以进行测试或其他操作。

qhhrdooz

qhhrdooz3#

看起来有两件事在发生
1)你可能没有最新的firebase-functions,这就是导致配置变量错误的原因。再次部署之前,请尝试在functions文件夹中运行以下命令:

npm i --save [email protected]
npm i --save [email protected]

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

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

ru9i0ody4#

只需关闭firebase.json文件中的预部署命令:这条线

"predeploy": [
    "npm --prefix \"$RESOURCE_DIR\" run lint",
    "npm --prefix \"$RESOURCE_DIR\" run build"
  ]

删除lint选项:只有构建:

"predeploy": [
    "npm --prefix \"$RESOURCE_DIR\" run build"
  ]

注意:所有EsLint linting优点都将被禁用,并且您的项目不会因任何错误而被linted

相关问题