Firebase 无法理解要部署的目标

Firebase cannot understand what targets to deploy

当部署以下 hello-world 等效代码时,我得到了最后显示的错误:-

$ ls -lR
.:
total 8
-rw-r--r-- 1 hgarg hgarg    3 Aug 29 14:55 firebase.json
drwxr-xr-x 2 hgarg hgarg 4096 Aug 29 11:56 functions

./functions:
total 4
-rw-r--r-- 1 hgarg hgarg 1678 Aug 29 11:56 index.js

firebase.json 看起来像这样:-

{}

和index.json像这样:-

'use strict';

const functions = require('firebase-functions');

exports.search = functions.https.onRequest((req, res) => {
  if (req.method === 'PUT') {
    res.status(403).send('Forbidden!');
  }

  var category = 'Category';
  console.log('Sending category', category);
  res.status(200).send(category);
});

但是部署失败:-

$ firebase deploy

Error: Cannot understand what targets to deploy. Check that you specified valid targets if you used the --only or --except flag. Otherwise, check your firebase.json to ensure that your project is initialized for the desired features.

$ firebase deploy --only functions

Error: Cannot understand what targets to deploy. Check that you specified valid targets if you used the --only or --except flag. Otherwise, check your firebase.json to ensure that your project is initialized for the desired features.

最好使用默认选项预填充 firebase。我选择我只想使用托管 firebase.json 应该使用默认托管选项创建。

{
  "hosting": {
    "public": "public"
  }
}

or you try run firebase init again.

Firebase 读取 package.json 以读取 functions 目标的详细信息。我的项目目录中缺少此文件,因为我在执行 init.

后移动了文件

创建一个干净的目录并在其中执行 firebase 初始化函数 创建开始所需的所有文件和文件夹。

遇到了类似的问题。在 firebase.json 文件中(在托管参数中),我们必须给出我们要部署的目录的名称(在我的例子中,我已经在我想要部署的目录中,因此我放了“。”在托管规范中)。它为我解决了错误。

{
  "hosting": {
    "public": ".",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}

我认为您遗漏了以下其中一项 -

a) 你应该在 index.html 所在的主项目之外 运行 firebase init。 b) select 在 运行ning firebase init 后按 SPACE 托管选项 c) 请给出包含 index.html 的文件夹名称。

你的项目将在运行宁。

我在 运行 时遇到了这个问题:

firebase emulators:exec --only firestore 'npm tst'

问题是 firebase.json 上必须有一个用于您想要的模拟器的 属性。所以在我的例子中,我在 firebase.json 上添加了一个 "firestore": {} 并且工作了。

我也遇到过这个问题,因为在我的 Firebase 项目设置开始时,我只初始化了托管功能。后来,当我想使用 Firebase CLI 部署 firestore 安全规则时,我的 初始化过程未完成,因此此命令无法按预期工作

我不能运行 firebase deploy --only firestore:rules 因为我的 firebase.json 文件没有用默认值初始化。

解决此问题的最简单和最充分的方法是再次 运行 firebase init 命令以设置您要使用的所有功能。您可以手动执行此操作,但您可能会错过命令行界面可以按照默认设置所需的确切方式为您设置的详细信息。

解决方案:

运行 再次执行 firebase init 命令 ...并确保初始化您当前使用的每个功能。如果您已经有一些重要配置,请仔细阅读 init 命令要求的 Firebase CLI 说明,注意不要覆盖重要配置。