我今天正在做一些项目合并,并遇到了 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"
}
}
感谢@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
在我们开始之前,请记住:
[信息]
=== 项目设置
[信息]
[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
有其他问题,请使用适当的信息打开一个新问题!
我遵循了提供的解决方案,但他们没有解决我的问题。
页面不获取数据,它是空白的,但加载了收藏图标。 问题多冷
最有用的评论
我来这里是为了打开一些与此类似的问题。
IMO最好使用默认选项预先填充firebase。 我选择我只想使用托管 firebase.json 应该使用默认托管选项创建。