【问题标题】:"Public Directory Warning - Public directory is empty" on firebase deployFirebase部署上的“公共目录警告-公共目录为空”
【发布时间】:2014-09-19 21:57:04
【问题描述】:

我有一个具有以下托管配置的 firebase 应用:

{
  "firebase": "the-world-table",
  "public": "app",
  "ignore": [
    "firebase.json",
    "**.*",
    "**/node_modules/**"
  ]
}

app 目录不为空(其中有一个 index.html 和一个 javascript 文件)。但是,当我部署时,我收到以下警告:

Preparing to deploy Public Directory...
Public Directory Warning - Public directory is empty, removing site
progress: 100%
Sucessfully removed

当我浏览静态文件时,找不到它们。有什么想法吗?

【问题讨论】:

  • 不会忽略**.* 忽略一切吗?
  • @Kato 是的。请参阅下面的讨论。

标签: firebase firebase-hosting


【解决方案1】:

您的忽略规则似乎有点过于热衷于从您指定要部署的目录中删除文件:

您指定的规则 **.* 与要部署的文件夹根目录中包含.,在这种情况下没有留下任何东西。如果您删除此行或将/ 添加回来,您应该会看到您期望的行为。

docs on the subject 涵盖了glob pattern matching 的基础知识并提供了一些进一步的参考

【讨论】:

  • 谢谢@chris-raynor。我从文档中的示例中得到了这个,并没有仔细研究它。可能值得用一个更好的例子来更新文档。
【解决方案2】:

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

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

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

这是直接 Firebase 在 dist 文件夹中查找 index.html 或任何文件夹调用而不是 public。 您的文件调用 index.html.

之后:

firebase deploy

可能会起作用

【讨论】:

    【解决方案3】:

    您似乎正在尝试部署一个空目录。

    public 属性应对应于您的公共文件所在的位置,例如 index.html

    有几种方法可以解决它:

    1.更改配置以指向您的公开内容

    更改firebase.json 以指向正确的位置。例如,如果您的 html 文件与 firebase.json 位于同一目录中,您的配置可能如下所示:

    {
      "firebase": "the-world-table",
      "public": ".",
      "ignore": [
        "firebase.json",
        "**.*",
        "**/node_modules/**"
      ]
    }
    

    2。使目录结构与您的配置匹配

    这是一个适用于您的 firebase.json 配置的示例目录结构:

    - project/
       - README.md
       - firebase.json
       - app/
           - index.html
    

    【讨论】:

    • 谢谢@jenny-tong。实际上,我确实按照您在选项 2 中描述的那样组织了我的应用程序。应用程序目录包含一个 index.html 文件和一个 javascript 文件,这就是我对它不起作用感到困惑的原因。
    • 请在@jenny-tong 下方查看我的评论。看起来我在 firebase-tools 中发现了一个错误。
    【解决方案4】:

    如果您的 index.html 位于公共文件夹中,请更改 firebase.json 中的以下代码

    {
      "hosting": {
        "public": "./"
      }
    }
    

    【讨论】:

      【解决方案5】:

      看起来我的 firebase.json 在 firebase-tools 中发现了一个错误。 “忽略”部分中指定的文件被视为相对于“公共”中指定的目录。如果您在“忽略”部分中指定不存在的文件,它甚至会在开始部署之前停止并给出类似上述的错误。

      【讨论】:

      • 如果您在 Firebase 中发现错误,请联系 Firebase 支持团队,以便我们进行修复:firebase.com/docs/help/#section-request
      • 好的,我已经提交了一封描述错误的电子邮件。
      • 非常感谢!一旦我们深入了解它,我会更新我的答案。
      • @JennyTong 似乎是我在没有仔细查看的情况下从文档中获取示例的错误。可能值得更新文档以避免这种情况。
      猜你喜欢
      • 1970-01-01
      • 2019-01-20
      • 2016-05-29
      • 2019-07-16
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      相关资源
      最近更新 更多