Firebase无法了解要部署的目标

时间:2017-08-29 09:36:11

标签: firebase

当部署以下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.

5 个答案:

答案 0 :(得分:12)

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

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

或者您尝试再次运行firebase init

答案 1 :(得分:7)

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

我认为您缺少以下任何一项内容 -

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

您的项目将会正常运行。

答案 4 :(得分:0)

我在运行时遇到此问题:

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

问题在于firebase.json上必须具有所需仿真器的属性。因此,以我为例,我在"firestore": {}上添加了firebase.json并开始工作。