Firebase 无法理解要部署的目标

问题描述 投票:0回答:7

部署以下 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-cli
7个回答
21
投票

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

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

或者您尝试再次运行

firebase init


9
投票

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

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

5
投票

我在跑步时遇到了这个问题:

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

问题是

firebase.json
上必须有您想要的模拟器的属性。所以就我而言,我在
"firestore": {}
上添加了
firebase.json
并成功了。


3
投票

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

我跑不了

firebase deploy --only firestore:rules
因为我的
firebase.json
文件未使用默认值初始化。

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

解决方案:

再次运行

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


1
投票

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

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


1
投票

我认为您缺少以下其中一项 -

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

您的项目将开始运行。


0
投票

对我来说这很有效,

firebase 注销

firebase 登录

© www.soinside.com 2019 - 2024. All rights reserved.