我正在逐步完成本教程:
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"
]
}
}
关于这个错误可能是什么的任何想法?有没有办法获得更详细的信息?
答案 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.log
由firebase 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_modules
和package-lock.json
并重新运行npm install
为我解决了这个问题。