代码之家  ›  专栏  ›  技术社区  ›  nnige

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

  •  16
  • nnige  · 技术社区  · 8 年前

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

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

    我目前正在尝试为一个大学项目使用Firebase构建一个移动应用程序后端。我使用节点。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 install -g firebase-tools 以更新firebase CLI,但未更改任何内容。

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

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

    还有更多,尽管我的编码函数以前工作得很好。

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

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

    3 回复  |  直到 8 年前
        1
  •  35
  •   Doug Stevenson    8 年前

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

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

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

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

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

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

        2
  •  1
  •   laurenzlong    8 年前

    看起来这里发生了两件事:

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

    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;
    });
    
        3
  •  0
  •   Dharman vijay    5 年前

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

    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的整个文件,但您仍然需要部署以进行测试或其他。