无法读取公共目录。删除链接和快捷方式,然后重试。 (火力地堡)

时间:2016-06-06 22:23:09

标签: firebase firebase-hosting firebase-tools

我正在逐步完成本教程:

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

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

  

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

我不知道链接和快捷方式是什么意思,因为我在这个文件夹中没有任何内容,只有普通的旧文件。

我正在尝试部署的文件夹是web文件夹,其中应包含已完成的示例。

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

firebase.json文件如下所示:

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

关于这个错误可能是什么的任何想法?有没有办法获得更详细的信息?

7 个答案:

答案 0 :(得分:2)

在我的情况下,临时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

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

答案 1 :(得分:1)

在没有解决方案的粗略搜索之后,我尝试了npm,然后进行了Firebase部署。好极了!可以。

答案 2 :(得分:0)

问题是firebase-debug.log

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

我如何找到

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

Windows 10

首先,我想提一下我在Windows 10计算机上,我不知道这是否相关,但以防万一我认为我提到它

<强> 1。与工作项目比较

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

然后我尝试部署它。这是成功的,所以我知道部署总体上有效。

<强> 2。使用相同的firebase.json

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

当我尝试部署时,它仍然无法正常工作。

第3。删除权限

此时我怀疑这是一个许可问题。所以我决定压缩文件夹,然后将其解压缩到另一个文件夹。然后尝试部署新文件夹。

理论是权限将在此过程中消失。

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

  

firebase-debug.logfirebase deploy命令

自动生成

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

<强>成功

有效!

但仍然没有想出如何删除该死的文件。

答案 3 :(得分:0)

我遇到了这个问题,在我的情况下,firebase serve锁定了文件。停止该过程允许firebase deploy成功运行。

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

当您要进行部署时,您可能会进入/functions。在我的情况下,我在根目录(功能不完整)文件夹中运行firebase deploy --only functions:FOOBAR命令,该命令可以正常工作。

答案 6 :(得分:0)

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