Firebase Hosting Deploy Error: Task 5fc... failed: retries exhausted after 6 attempts
Firebase Hosting Deploy Error: Task 5fc... failed: retries exhausted after 6 attempts
我正在尝试为生产和开发环境设置一个 2 b运行d 新 Firebase 项目,其中包含 Firestore、函数、存储和托管。我从删除对旧 firebase 项目的引用开始:firebase.json
和 .firebaserc
。然后,我 运行 $ firebase init
使用 test
Firebase 项目设置托管、功能、存储和 Firestore。然后,我使用 $ firebase use --add
设置 Firebase 别名,以便在一个 React.js 项目中的两个项目之间切换。我构建了 npm 并尝试使用:$ firebase deploy --project:test
进行部署,但托管一直尝试使用相同的最后一个文件并失败:Error: Task 5fcd... failed: retries exhausted after 6 attempts.
。
我看到一些与服务器暂时关闭有关的 Whosebug 答案,但我没有看到他们这边有任何服务器问题 (https://status.firebase.google.com/),而且这种情况以前一直存在。在我从事的另一个项目中,我试图在同一个 Firebase 项目上部署到 2 个托管目标,但一个失败了,另一个工作正常,我遇到了同样的错误(我从来没有找到另一个的解决方案而不是不使用多个目标。)
我还可以测试什么来让它工作?它是我的 React.js 代码库中的东西吗? (我最近部署到我过去的项目)可能与我的 Firebase 设置过程有关?或者仍然与旧的 Firebase 项目有联系?我不知道接下来要看什么来解决这个问题。任何方向都很好,谢谢!
Ps:可能无法连接的奇怪之处在于,如果我 运行 只是 $ firebase deploy
,它不会部署 firebaserc 中定义的默认测试环境,但实时测试环境?
.firebaserc:
{
"projects": {
"default": "test-app-tech",
"test": "test-app-tech",
"live": "live-app-tech"
}
}
firebase.json:
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"functions": {
"predeploy": "npm --prefix \"$RESOURCE_DIR\" run build"
},
"hosting": {
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
"storage": {
"rules": "storage.rules"
}
}
完整控制台日志:
(不确定比控制台更长的日志文件在哪里)
=== Deploying to 'test-app-tech'...
i deploying storage, firestore, functions, hosting
Running command: npm --prefix "$RESOURCE_DIR" run build
> functions@ build C:\Users\me\Documents\GitHub\react.app.tech\functions
> tsc
+ functions: Finished running predeploy script.
i firebase.storage: checking storage.rules for compilation errors...
+ firebase.storage: rules file storage.rules compiled successfully
i firestore: reading indexes from firestore.indexes.json...
i cloud.firestore: checking firestore.rules for compilation errors...
+ cloud.firestore: rules file firestore.rules compiled successfully
i functions: ensuring necessary APIs are enabled...
+ functions: all necessary APIs are enabled
i storage: latest version of storage.rules already up to date, skipping upload...
i firestore: uploading rules firestore.rules...
+ firestore: deployed indexes in firestore.indexes.json successfully
i functions: preparing functions directory for uploading...
i functions: packaged functions (80.39 KB) for uploading
+ functions: functions folder uploaded successfully
i hosting[test-app-tech]: beginning deploy...
i hosting[test-app-tech]: found 32 files in build
⠸ hosting: uploading new files [0/1] (0%)
Error: Task 5fcd5c559ded0c02b3ed7840ca3ee77e95b798730af98d9f18bc627ac898071e failed: retries exhausted after 6 attempts
通过附加 --debug
后缀进行了更深入的探索,这给了我:TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
。对此进行了探索,并尝试修复,但没有奏效。我删除了 /node_modules/
、package-lock.json
和 /build/
,重新安装了软件包,部署了它,它工作了。不确定是什么修复了它,因为我之前删除了这些文件无济于事。我做了一些其他小的、看似无关的更改,谁知道可能已经连接,但它现在正在工作!
更新:由于我的生产环境遇到了同样的问题,我必须真正找到错误,并将其缩小到我探索 TypeError [ERR_INVALID_ARG_TYPE]
所采取的步骤。跟着this post有点,我改了:
"hosting": {
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
到
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
然后部署并通过,但实时服务器上没有显示任何内容,因为它当然没有查看构建文件夹。所以我把它改回指向构建而不是 public,然后再次部署并且它起作用了。奇怪的解决方案,发送给 Firebase 团队看看这里到底发生了什么。
在ANGULAR
道格拉斯回答的是解决方案,在 angular.json 中,您将“托管:”dist“”更改为“托管:”public”。
然后你 运行 再次部署 firebase,这会给你一个错误,但别担心,去更改你在 angular.json 中修改的内容,然后再次 运行 firebase 部署,瞧!对我有用
删除 .firebase 文件夹中的内容并尝试重新部署。
发生这种情况有两个原因。
- 通过删除根文件夹中的 .firebase 文件夹可以解决问题。
如果这不起作用,
- 您的互联网连接速度可能会变慢,并且您项目中的文件可能会更大。所以尝试使用快速的互联网连接。
在网速较慢的情况下,如果您一次又一次地尝试部署,您会看到控制台上上传的文件数量减少了。这意味着您的文件正在上传,但需要太多时间,而且 firebase 正在耗尽。
对我来说,问题是连接每隔几分钟就断开一次。我能够通过重复上传过程来上传我的文件。坐在电脑前手动重复是站不住脚的,所以在我的根文件夹中我添加了一个 bash 脚本来循环重试错误。
创建文件deploy_staging.sh或deploy_production.sh等:
#!/bin/bash
trap "exit" INT
firebase use my_project_name
until firebase deploy --only hosting:my_project; do
echo Transfer disrupted, retrying in 3 seconds...
sleep 3
done
(*trap "exit" INT
允许在需要时通过 ctrl-c 中断循环)
在文件的目录下,在终端命令行上,运行 chmod +x my_file_name.sh
使文件可执行。
运行 终端中带有 ./my_file_name.sh
的文件。它将重新运行 firebase deploy:production
直到文件上传。
我正在尝试为生产和开发环境设置一个 2 b运行d 新 Firebase 项目,其中包含 Firestore、函数、存储和托管。我从删除对旧 firebase 项目的引用开始:firebase.json
和 .firebaserc
。然后,我 运行 $ firebase init
使用 test
Firebase 项目设置托管、功能、存储和 Firestore。然后,我使用 $ firebase use --add
设置 Firebase 别名,以便在一个 React.js 项目中的两个项目之间切换。我构建了 npm 并尝试使用:$ firebase deploy --project:test
进行部署,但托管一直尝试使用相同的最后一个文件并失败:Error: Task 5fcd... failed: retries exhausted after 6 attempts.
。
我看到一些与服务器暂时关闭有关的 Whosebug 答案,但我没有看到他们这边有任何服务器问题 (https://status.firebase.google.com/),而且这种情况以前一直存在。在我从事的另一个项目中,我试图在同一个 Firebase 项目上部署到 2 个托管目标,但一个失败了,另一个工作正常,我遇到了同样的错误(我从来没有找到另一个的解决方案而不是不使用多个目标。)
我还可以测试什么来让它工作?它是我的 React.js 代码库中的东西吗? (我最近部署到我过去的项目)可能与我的 Firebase 设置过程有关?或者仍然与旧的 Firebase 项目有联系?我不知道接下来要看什么来解决这个问题。任何方向都很好,谢谢!
Ps:可能无法连接的奇怪之处在于,如果我 运行 只是 $ firebase deploy
,它不会部署 firebaserc 中定义的默认测试环境,但实时测试环境?
.firebaserc:
{
"projects": {
"default": "test-app-tech",
"test": "test-app-tech",
"live": "live-app-tech"
}
}
firebase.json:
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"functions": {
"predeploy": "npm --prefix \"$RESOURCE_DIR\" run build"
},
"hosting": {
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
"storage": {
"rules": "storage.rules"
}
}
完整控制台日志: (不确定比控制台更长的日志文件在哪里)
=== Deploying to 'test-app-tech'...
i deploying storage, firestore, functions, hosting
Running command: npm --prefix "$RESOURCE_DIR" run build
> functions@ build C:\Users\me\Documents\GitHub\react.app.tech\functions
> tsc
+ functions: Finished running predeploy script.
i firebase.storage: checking storage.rules for compilation errors...
+ firebase.storage: rules file storage.rules compiled successfully
i firestore: reading indexes from firestore.indexes.json...
i cloud.firestore: checking firestore.rules for compilation errors...
+ cloud.firestore: rules file firestore.rules compiled successfully
i functions: ensuring necessary APIs are enabled...
+ functions: all necessary APIs are enabled
i storage: latest version of storage.rules already up to date, skipping upload...
i firestore: uploading rules firestore.rules...
+ firestore: deployed indexes in firestore.indexes.json successfully
i functions: preparing functions directory for uploading...
i functions: packaged functions (80.39 KB) for uploading
+ functions: functions folder uploaded successfully
i hosting[test-app-tech]: beginning deploy...
i hosting[test-app-tech]: found 32 files in build
⠸ hosting: uploading new files [0/1] (0%)
Error: Task 5fcd5c559ded0c02b3ed7840ca3ee77e95b798730af98d9f18bc627ac898071e failed: retries exhausted after 6 attempts
通过附加 --debug
后缀进行了更深入的探索,这给了我:TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
。对此进行了探索,并尝试修复,但没有奏效。我删除了 /node_modules/
、package-lock.json
和 /build/
,重新安装了软件包,部署了它,它工作了。不确定是什么修复了它,因为我之前删除了这些文件无济于事。我做了一些其他小的、看似无关的更改,谁知道可能已经连接,但它现在正在工作!
更新:由于我的生产环境遇到了同样的问题,我必须真正找到错误,并将其缩小到我探索 TypeError [ERR_INVALID_ARG_TYPE]
所采取的步骤。跟着this post有点,我改了:
"hosting": {
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
到
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
然后部署并通过,但实时服务器上没有显示任何内容,因为它当然没有查看构建文件夹。所以我把它改回指向构建而不是 public,然后再次部署并且它起作用了。奇怪的解决方案,发送给 Firebase 团队看看这里到底发生了什么。
在ANGULAR 道格拉斯回答的是解决方案,在 angular.json 中,您将“托管:”dist“”更改为“托管:”public”。 然后你 运行 再次部署 firebase,这会给你一个错误,但别担心,去更改你在 angular.json 中修改的内容,然后再次 运行 firebase 部署,瞧!对我有用
删除 .firebase 文件夹中的内容并尝试重新部署。
发生这种情况有两个原因。
- 通过删除根文件夹中的 .firebase 文件夹可以解决问题。 如果这不起作用,
- 您的互联网连接速度可能会变慢,并且您项目中的文件可能会更大。所以尝试使用快速的互联网连接。
在网速较慢的情况下,如果您一次又一次地尝试部署,您会看到控制台上上传的文件数量减少了。这意味着您的文件正在上传,但需要太多时间,而且 firebase 正在耗尽。
对我来说,问题是连接每隔几分钟就断开一次。我能够通过重复上传过程来上传我的文件。坐在电脑前手动重复是站不住脚的,所以在我的根文件夹中我添加了一个 bash 脚本来循环重试错误。
创建文件deploy_staging.sh或deploy_production.sh等:
#!/bin/bash
trap "exit" INT
firebase use my_project_name
until firebase deploy --only hosting:my_project; do
echo Transfer disrupted, retrying in 3 seconds...
sleep 3
done
(*trap "exit" INT
允许在需要时通过 ctrl-c 中断循环)
在文件的目录下,在终端命令行上,运行 chmod +x my_file_name.sh
使文件可执行。
运行 终端中带有 ./my_file_name.sh
的文件。它将重新运行 firebase deploy:production
直到文件上传。