我正在逐步完成本教程:
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"
]
}
}
关于这个错误可能是什么的任何想法?有没有办法获得更详细的信息?
在我的情况下,临时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 -> [email protected]
在emacs中保存文件index.html解决了我的问题!
问题是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.log
由firebase deploy
命令自动生成
因此,我只是复制除firebase-debug.log
之外的所有文件而不是压缩和解压缩,并尝试部署它。
成功
有效!
仍然没有弄清楚如何实际删除该死的文件。
我有这个问题,在我的情况下是firebase serve
锁定文件。停止该过程允许firebase deploy
成功运行。
我怀疑它实际上是因为两个单独的firebase实例正在尝试写入同一个日志文件而serve
在运行时持有锁。
您应该使用这样的debug命令:firebase deploy --debug,这可以帮助您轻松清楚地找出导致此问题的原因。