Firebase-tools: 带有空 firebase.json 的 Firebase 部署错误消息

创建于 2017-06-07  ·  32评论  ·  资料来源: firebase/firebase-tools

我今天正在做一些项目合并,并遇到了 firebase deploy 命令错误。

我不小心留下了我的 firebase.json,内容如下:
{}

并尝试使用firebase deploy --only database进行部署,但出现以下错误:
Error: No targets found. Valid targets are: database,storage,functions,hosting

我花了一段时间才弄清楚,因为我认为这与最近的 nodejs v8 问题有关 + 在过去 6 个月里我已经成功部署了多个项目(规则和一个单独的函数项目,它有空的 firebase。 json) 直到现在。

如果错误建议查看我的 firebase.json,那会有所帮助 👍

最有用的评论

我来这里是为了打开一些与此类似的问题。

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

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

所有32条评论

我来这里是为了打开一些与此类似的问题。

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

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

感谢@ahaverty的反馈! 我同意错误消息可能更具描述性。 这有点困难,因为如果有人在使用 --only 标志时拼错了目标名称也会发生同样的错误(例如,如果有人运行“firebase serve --only functions:funcA”并且他们实际上没有名为 funcA 的函数) . 您如何看待以下错误消息?

错误:无法理解要部署的目标。 如果您使用了 --only 或 --except 标志,请检查您是否指定了有效的目标。 否则,请检查您的 firebase.json 以确保您的项目已针对所需功能进行了初始化。

@pedrosnk " firebase.json 。 如果没有,您能否提交另一个错误并包含复制的详细说明?

@laurenzlong这两种情况听起来都很完美👌

首先谢谢你的回复:)

我弄清楚发生在我身上的事情。 @ahaverty 可能也发生了同样的事情。

我输入了$ firebase init ,但我没有通过按空格选择托管选项。我去了它并按了回车键。 (尚未阅读 cli 上的完整消息)。

这完全是我的错误,但我觉得这个错误是可以避免的。 也许如果我按 Enter 进入某个功能,cli 应该能够自动为我选择它。 而不是生成一个空的firebase.json文件。

再次感谢这个项目。

关于我的用例的上下文:我正在将我们的 Firebase 部署命令包装在 bash 脚本中,并带有一些可爱的“你确定吗?运行firebase use devproject ! 我还通过脚本生成了 firebase.json,但是正在做一些一次性的 rules.bolt 合并到我的函数 repo 中,并最终达到了这个目标。 @pedrosnk我认为你的建议会破坏我的脚本,但@laurenzlong错误消息是一个很好的修复👌

在这种情况下同意更好的错误消息就足够了

我同意@pedrosnk,该文件应预先填充一些默认选项,例如:

{
    "hosting": {
        "public": "public",
        "rewrites": [
            {
                "source": "**",
                "destination": "/index.html"
            }
        ],
    }
}

毕竟每个人都在使用带有 Firebase 托管的 SPA。

刚刚发送了一个 PR 来修复错误消息。 @pedrosnk@PierBover如果您没有选择任何功能,“

@laurenzlong我在做firebase init时确实选择了hosting firebase init并且我得到了一个空文件。

@PierBover那是一个错误。 当我执行“firebase init”并选择托管时,我在 firbase.json 中得到了这个:

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

你能尝试重现这个错误吗? 如果你能重现它,然后提交另一个问题? (请包括 CLI 版本、您正在运行的平台。)

此外,您可以通过按空格来选择一个特征(然后圆圈会被填充)。 如果您选择了它,那么您将被引导解决一些与托管相关的问题(您想将什么用作公共目录?配置为单页应用程序(将所有 url 重写为 /index.html)?)

你是对的,我可能按回车而不是空格。 我的错。

不用担心!

抱歉,我是新手,这是与我看到的错误最接近的讨论。 在 firebase init 上,我选择了云函数并得到了一个带有花括号的空 firebase.json。 现在部署让我“无法理解要部署的目标”。 使用托管是使用云功能的先决条件吗?

@himanshugarg我无法重现您的错误,您应该能够在初始化功能后进行部署。 您能否提交一个单独的问题,并按照问题模板进行操作,以便我们获取更多详细信息?

谢谢! @pedrosnk

@laurenzlong感谢您的检查。 这都是我的错。 我只将一些 firebase 文件移动到另一个目录,导致了这种情况。 做一个干净的初始化工作得很好。 https://stackoverflow.com/questions/45935600/firebase-cannot-understand-what-targets-to-deploy

在 firebase init CLI 中,看到方括号 ( ) 的人会认为它模仿单选按钮,因此选择一个选项并按 Enter。 我建议使用方括号 [ ] 来表示多项选择(复选框)。

由于按 Enter 并错过了空格,我还有一个空的 firebase.json 文件。
我没有阅读说明,因为我知道我需要选择“托管”选项。

"ignore": [
  "firebase.json",
  "**/.*",
  "**/node_modules/**"
]

// 避免在 sqr 括号之后使用 etra ',' 除非你有一个 arg 去那里

我还按下了输入而不是空格。 我想这不是功能问题,但确实是可用性问题

@lelong88我相信这对很多人来说都是第一次。

firebase 默认在文件夹“public”中查找文件“index.html”。

例如,如果在 angular4 中,“index.html”存在于文件夹“dist”中,则必须进入“firebase.json”并粘贴到那里:

{
“主办”:{
“公共”:“dist”
}
}

这是直接让firebase在“dist”文件夹中查找“index.html”或任何文件夹调用而不是“public”。
你有你的文件调用'index.html'的核心。

在那之后:

firebase deploy

可能会工作

为我工作!

选择功能的空间? 你被石头砸死了吗?

ahahahah 使用空间? LMAO。
好的,我明白为什么我现在得到一个空文件了。 ¯_(ツ)_/¯

[调试] [2018-06-03T15:18:34.367Z] ---------------------------------- ----------------------------------
[调试] [2018-06-03T15:18:34.371Z] 命令:C:\Program Files\nodejs\node.exe C:\Users\pushpendraPC\AppData\Roaming\npm\node_modules\firebase-toolsbinfirebase init MyAssignMent
[调试] [2018-06-03T15:18:34.371Z] CLI 版本:3.18.5
[调试] [2018-06-03T15:18:34.371Z] 平台:win32
[调试] [2018-06-03T15:18:34.372Z] 节点版本:v10.3.0
[调试] [2018-06-03T15:18:34.373Z] 时间:Sun Jun 03 2018 20:48:34 GMT+0530(印度标准时间)
[调试] [2018-06-03T15:18:34.373Z] ---------------------------------- ----------------------------------
[调试]
[调试] [2018-06-03T15:18:34.388Z] > 命令需要范围:["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https: //www.googleapis.com/auth/firebase"]
[调试] [2018-06-03T15:18:34.389Z] > 通过登录用户授权
[信息]
######## #### ######## ######## ######## ### ###### ##### ###
## ## ## ## ## ## ## ## ## ## ##
###### ## ######## ###### ######## ######### ###### ##### #
## ## ## ## ## ## ## ## ## ## ##
## #### ## ## ######## ######## ## ## ###### ########

您即将在此目录中初始化一个 Firebase 项目:

C:\Users\pushpendraPC\Desktop\project\NewAsignMentDeploy\AssignMent\src

在我们开始之前,请记住:

  • 您正在现有的 Firebase 项目目录中进行初始化

[信息]
=== 项目设置
[信息]
[info] 首先,让我们将此项目目录与 Firebase 项目相关联。
[info] 您可以通过运行 firebase use --add 创建多个项目别名,
[信息] 但现在我们只设置一个默认项目。
[信息]
[调试] [2018-06-03T15:18:36.584Z] >>> HTTP 请求获取https://admin.firebase.com/v1/projects

2018 年 6 月 3 日星期日 20:48:36 GMT+0530(印度标准时间)
[调试] [2018-06-03T15:18:38.115Z] <<< HTTP 响应 200
[info] i .firebaserc 已经有一个默认项目,正在跳过
[信息]
=== 我的作业设置
[调试] [2018-06-03T15:18:38.543Z] TypeError: features[nextFeature] 不是函数
在初始化 (C:\Users\pushpendraPC\AppData\Roaming\npm\node_modules\firebase-toolslib\init\index.js:13:49)
在 C:\Users\pushpendraPC\AppData\Roaming\npm\node_modules\firebase-toolslib\init\index.js:14:14
在 process._tickCallback (internal/process/next_tick.js:68:7)
[错误]
[错误] 错误:发生了意外错误。

当我运行 cmd firebase init 时显示错误

你好,
以下是浏览器中的错误。

找不到网页
该文件不存在,并且在当前目录中找不到 index.html 或根目录中的 404.html。

为什么我会看到这个?
您可能为您的应用程序部署了错误的目录。 检查您的 firebase.json 并确保 public 目录指向包含 index.html 文件的目录。

您还可以在站点的根目录中添加 404.html 以将此页面替换为自定义错误页面。

* * * * *命令行* * * * * *
火力基地部署

=== 部署到“organicshop-18573”...

我部署托管
我托管:正在准备要上传的 dist 目录...
⚠ 警告:公共目录不包含 index.html
✔ 托管:7个文件上传成功

✔ 部署完成!
* * * * Firebase.Json * * * * * **

{
“主办”:{
“公共”:“dist”,
“忽略”: [
"firebase.json",
" /. ", /node_modules/ ],“重写”:[{“来源”:“ ”,
“目的地”:“/index.html”
}
]
}
}
* *文件夹结构* * **
在 dist 文件夹中,我有 index.html。 但是当我尝试部署时,它显示为“文件不存在并且没有 index.html。

输入 ng build 然后输入 firebase deploy

火力基地不好

这个原始问题似乎得到了解决。 由于最近没有活动,我将关闭它。

如果有人对firebase.json有其他问题,请使用适当的信息打开一个新问题!

我遵循了提供的解决方案,但他们没有解决我的问题。

页面不获取数据,它是空白的,但加载了收藏图标。 问题多冷

此页面是否有帮助?
0 / 5 - 0 等级