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 文件夹中的内容并尝试重新部署。

发生这种情况有两个原因。

  1. 通过删除根文件夹中的 .firebase 文件夹可以解决问题。 如果这不起作用,
  2. 您的互联网连接速度可能会变慢,并且您项目中的文件可能会更大。所以尝试使用快速的互联网连接。

在网速较慢的情况下,如果您一次又一次地尝试部署,您会看到控制台上上传的文件数量减少了。这意味着您的文件正在上传,但需要太多时间,而且 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 直到文件上传。