另一天关于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
所以我做到了。 然后我尝试部署我的函数(从本地索引.js)并收到以下警告:
错误:Firebase 配置变量不可用。请使用最新版本的 Firebase CLI 来部署此功能
我使用npm install -g firebase-tools
来更新火力库CLI,但没有任何变化。
我认为备份我的旧项目并在新文件夹中初始化一个新项目并将其连接到我现有的 FB-Project 并将其连接到我现有的 FB-Project,然后将我的旧索引的内容复制粘贴到新项目文件夹中.js是一个好主意。 尝试部署这个新项目时,我收到了大量有关我的代码的错误和警告,例如:
18:4 error Expected catch() or return promise/catch-or-return
等等,即使我的编码函数以前工作正常。
所以我决定尝试修复旧项目的错误可能是最好的。
有没有人建议在这种情况下该怎么做,或者在哪里可以找到这些神秘的Firebase配置变量?我无法在网上找到任何解决我的问题的方法。 我真的很感激任何形式的帮助支持,因为我不知道该怎么做,而且我没有得到我的大学的支持......
有关配置变量的错误消息要求您更新 Firebase CLI,您确实这样做了。 这很好。 (你可以忽略有关@google-cloud/functions-emulator的警告。
创建新项目时,您可能在项目创建过程中选择使用 ESLint。 提示会说:
您想使用 ESLint 来捕获可能的错误并强制执行样式吗?
这是自 3.17.0 版以来 Firebase CLI 中的一项非常新的功能,您之前可能没有使用 ESLint。
你看到的那些新错误是ESLint告诉你的代码存在潜在的问题。 Firebase 团队强烈建议您采纳这些警告和错误的建议并加以解决,以便您的代码减少问题。
如果您现在根本无法使用 ESLint,您可以重新创建您的项目,但在系统提示您时选择不使用ESLint。 或者,可以通过编辑firebase.json
文件并删除运行 lint 命令的预部署脚本,在当前项目中禁用它。
在某些情况下,您可能想一起认输,但只想暂时忽略 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 的整个文件,但您仍然需要部署以进行测试或其他什么。
看起来那里发生了两件事:
1)您可能没有最新的Firebase函数,这就是导致配置变量错误的原因。在再次部署之前,请尝试在函数文件夹中运行以下命令:
npm i --save firebase-functions@0.8.1
npm i --save firebase-admin@5.8.1
2) "预期 catch() 或返回"是一个 linter 错误,这意味着您没有返回您的承诺链。(这将导致已部署函数出现超时错误)。因此,您应该修改代码,使其更像:
return asynchronousTask().then(function() {
....
return someValue;
});