6

我正在逐步完成本教程:

https://codelabs.developers.google.com/codelabs/firebase-web/#0

在第 9 步,它要求您执行firebase deploy,但是当我尝试执行时,我收到错误消息:

无法读取公共目录。删除链接和快捷方式,然后重试。

我不知道链接和快捷方式是什么意思,据我所知,这个文件夹中除了普通的旧文件之外什么都没有。

我要部署的web文件夹是应该包含已完成示例的文件夹。

请注意,根据说明,storage.rules使用存储桶的名称更新了 index.html,使用 firebase 代码段更新了 index.html。

firebase.json 文件如下所示:

{
  "database": {
    "rules": "database-rules.json"
  },
  "storage": {
    "rules": "storage.rules"
  },
  "hosting": {
    "public": "./",
    "ignore": [
      "firebase.json",
      "database-rules.json",
      "storage.rules"
    ]
  }
}

关于这个错误可能是什么的任何想法?有什么方法可以获取更详细的信息吗?

4

8 回答 8

4

您应该使用如下调试命令: firebase deploy --debug ,这可以帮助您轻松清晰地找出导致此问题的原因。

于 2018-06-17T10:39:33.500 回答
3

在我的情况下,一个临时 emacs 文件导致了这个问题:

$ firebase deploy

=== Deploying to 'xxxx-42402'...

i  deploying database, hosting
✔  database: rules ready to deploy.
i  hosting: preparing public directory for upload...

Error: Could not read public directory. Remove links and shortcuts and try again.
RooseveltPwnsU:xxxx xrdawson$ ls -la public/
total 3840
-rw-r--r--   1 xrdawson  staff     5122 Feb 13 12:52 #index.html#
drwxr-xr-x  15 xrdawson  staff      510 Feb 13 14:40 .
lrwxr-xr-x   1 xrdawson  staff       35 Feb  6 14:12 .#index.html -> xrdawson@RooseveltPwnsU.local.67168

在 emacs 中保存文件 index.html 为我解决了这个问题!

于 2017-02-13T22:51:27.703 回答
2

问题是 firebase-debug.log

这个问题原来与配置无关。这个问题实际上是一个文件权限问题firebase-debug.log。我通过将除该文件之外的所有内容复制到一个新文件夹并部署新文件夹来解决了这个问题。

我是怎么发现的

由于无法从上面的错误消息中看出这是问题所在。我认为引导您完成我用来发现问题的过程仍然很有用。

视窗 10

首先,我想提一下我使用的是 Windows 10 计算机,我不知道这是否相关,但以防万一我想我会提到它。

1. 与工作项目进行比较

为了有一个基准/参考框架,我使用firebase init命令创建了一个新项目。

然后我尝试部署它。那是成功的,所以我知道部署通常是有效的。

2.使用相同的firebase.json

然后,我从工作部署文件夹中获取了自动生成firebase.json的文件,并替换了部署不起作用的项目文件夹中的 firebase.json 文件。

当我试图部署它仍然没有工作。

3.删除权限

在这一点上,我怀疑这是一个权限问题。所以我决定压缩文件夹,然后将其解压缩到另一个文件夹。然后尝试部署新文件夹。

理论上,权限将在此过程中被清除。

当我尝试压缩文件时,我收到了文件权限错误消息。有问题的文件的名称是firebase-debug.log. 这是您尝试部署时自动生成的文件。

firebase-debug.logfirebase deploy命令自动生成

因此,我没有压缩和解压缩,而是复制了所有文件,除了firebase-debug.log并尝试部署它。

成功

有效!

尽管如此,仍然没有弄清楚如何真正删除那个该死的文件。

于 2016-06-06T23:43:12.310 回答
1

在没有解决方案的粗略搜索之后,我尝试了 npm i 然后 firebase deploy。耶!有用。

于 2020-07-15T16:38:07.573 回答
0

/functions当您想要部署时,您可能处于其中。在我的情况下,我firebase deploy --only functions:FOOBAR在根(功能外)文件夹中运行命令并且它有效。

于 2020-08-26T16:33:06.177 回答
0

我遇到了这个问题,就我而言,firebase serve这是锁定文件。停止该进程允许firebase deploy成功运行。

我怀疑它实际上是因为两个单独的 firebase 实例试图写入同一个日志文件并serve在运行时持有一个锁。

于 2016-12-31T13:40:57.743 回答
0

删除node_modulespackage-lock.json重新运行npm install为我解决了这个问题。

于 2020-12-11T17:26:18.710 回答
0

我刚刚删除了firebase-debug.log文件并输入了以下命令:

firebase deploy --only funtionsfirebase deploy也可以。

在我的项目中,我需要部署,但如果您需要在本地测试firebase serve或根据您firebase serve --only functions的需要进行测试。firebase serve --only functions,hosting

于 2020-01-07T17:06:28.317 回答