获取“HTTP 错误:404,未找到方法”。在 Firebase Cloud Functions 上运行“firebase deploy --only functions”时

Ben*_*nne 5 google-cloud-functions firebase-cli

几个小时以来,我一直被这个问题困扰,我想你们中的一个人之前可能遇到过它。

Error: HTTP Error: 404, Method not found.在运行时遇到了问题,firebase deploy --only functions因此无法部署上次更新。

  • 所有的Firebase Cloud Functions 项目都会发生这种情况

  • 我的 Firebase 托管不会发生这种情况

这是我添加时得到的--debug

firebase deploy --only functions:onBookingCreated --debug
[2020-08-25T15:18:37.029Z] ----------------------------------------------------------------------
[2020-08-25T15:18:37.032Z] Command:       /usr/local/Cellar/node/12.4.0/bin/node /usr/local/bin/firebase deploy --only functions:onBookingCreated --debug
[2020-08-25T15:18:37.032Z] CLI Version:   7.0.0
[2020-08-25T15:18:37.032Z] Platform:      darwin
[2020-08-25T15:18:37.032Z] Node Version:  v10.15.3
[2020-08-25T15:18:37.033Z] Time:          Tue Aug 25 2020 17:18:37 GMT+0200 (Central European Summer Time)
[2020-08-25T15:18:37.034Z] ----------------------------------------------------------------------

[2020-08-25T15:18:37.044Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2020-08-25T15:18:37.044Z] > authorizing via signed-in user
[2020-08-25T15:18:37.044Z] [iam] checking project infinitytechnologies for permissions ["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]
[2020-08-25T15:18:37.046Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/infinitytechnologies:testIamPermissions  
 permissions=[cloudfunctions.functions.create, cloudfunctions.functions.delete, cloudfunctions.functions.get, cloudfunctions.functions.list, cloudfunctions.functions.update, cloudfunctions.operations.get, firebase.projects.get]
[2020-08-25T15:18:37.814Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Tue, 25 Aug 2020 15:18:42 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, server-timing=gfet4t7; dur=622, alt-svc=h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43", accept-ranges=none, transfer-encoding=chunked

=== Deploying to 'infinitytechnologies'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run build

> functions@ build /Users/Ben/infinitytechnologies-functions/functions
> tsc

?  functions: Finished running predeploy script.
[2020-08-25T15:18:48.982Z] > [functions] package.json contents: {
  "name": "functions",
  "scripts": {
    "build": "tsc",
    "buildRun": "tsc -w",
    "serve": "npm run build && firebase serve --only functions",
    "shell": "npm run build && firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "main": "lib/index.js",
  "dependencies": {
    "@google-cloud/logging-winston": "^3.0.5",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "firebase": "^7.19.0",
    "firebase-admin": "^8.13.0",
    "firebase-functions": "^3.0.0",
    "googleapis": "^43.0.0",
    "html-encoder-decoder": "^1.3.8",
    "moment": "^2.24.0",
    "moment-timezone": "^0.5.27",
    "morgan": "^1.9.1",
    "morgan-body": "^2.4.8",
    "node-mailjet": "3.3.1",
    "telegraf": "^3.30.1",
    "tmp": "^0.1.0",
    "winston": "^3.2.1"
  },
  "devDependencies": {
    "@types/moment-timezone": "^0.5.12",
    "typescript": "^3.7.4"
  },
  "private": true
}
i  functions: ensuring necessary APIs are enabled...
[2020-08-25T15:18:48.983Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/cloudfunctions.googleapis.com/projectSettings/infinitytechnologies?view=CONSUMER_VIEW  
 
[2020-08-25T15:18:48.984Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/runtimeconfig.googleapis.com/projectSettings/infinitytechnologies?view=CONSUMER_VIEW  
 
[2020-08-25T15:18:49.689Z] <<< HTTP RESPONSE 404 x-debug-tracking-id=15822584760350287123;o=0, vary=X-Origin, Referer, Origin,Accept-Encoding, content-type=application/json; charset=UTF-8, date=Tue, 25 Aug 2020 15:18:54 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, alt-svc=h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43", accept-ranges=none, transfer-encoding=chunked
[2020-08-25T15:18:49.689Z] <<< HTTP RESPONSE BODY code=404, message=Method not found., status=NOT_FOUND

Error: HTTP Error: 404, Method not found.
[2020-08-25T15:18:49.692Z] Error Context: {
  "body": {
    "error": {
      "code": 404,
      "message": "Method not found.",
      "status": "NOT_FOUND"
    }
  },
  "response": {
    "statusCode": 404,
    "body": {
      "error": {
        "code": 404,
        "message": "Method not found.",
        "status": "NOT_FOUND"
      }
    },
    "headers": {
      "x-debug-tracking-id": "15822584760350287123;o=0",
      "vary": "X-Origin, Referer, Origin,Accept-Encoding",
      "content-type": "application/json; charset=UTF-8",
      "date": "Tue, 25 Aug 2020 15:18:54 GMT",
      "server": "ESF",
      "cache-control": "private",
      "x-xss-protection": "0",
      "x-frame-options": "SAMEORIGIN",
      "alt-svc": "h3-29=\":443\"; ma=2592000,h3-27=\":443\"; ma=2592000,h3-T050=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"",
      "accept-ranges": "none",
      "transfer-encoding": "chunked"
    },
    "request": {
      "uri": {
        "protocol": "https:",
        "slashes": true,
        "auth": null,
        "host": "servicemanagement.googleapis.com",
        "port": 443,
        "hostname": "servicemanagement.googleapis.com",
        "hash": null,
        "search": "?view=CONSUMER_VIEW",
        "query": "view=CONSUMER_VIEW",
        "pathname": "/v1/services/cloudfunctions.googleapis.com/projectSettings/infinitytechnologies",
        "path": "/v1/services/cloudfunctions.googleapis.com/projectSettings/infinitytechnologies?view=CONSUMER_VIEW",
        "href": "https://servicemanagement.googleapis.com/v1/services/cloudfunctions.googleapis.com/projectSettings/infinitytechnologies?view=CONSUMER_VIEW"
      },
      "method": "GET"
    }
  }
}
[2020-08-25T15:18:49.693Z] <<< HTTP RESPONSE 404 x-debug-tracking-id=13898179262678311641;o=0, vary=X-Origin, Referer, Origin,Accept-Encoding, content-type=application/json; charset=UTF-8, date=Tue, 25 Aug 2020 15:18:54 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, alt-svc=h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43", accept-ranges=none, transfer-encoding=chunked
[2020-08-25T15:18:49.693Z] <<< HTTP RESPONSE BODY code=404, message=Method not found., status=NOT_FOUND
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!:)

Dou*_*son 8

您使用的是 Firebase CLI 的非常旧版本 (7.0.0)。最新的是8.9.0。按照安装说明进行升级。如果您使用 npm 安装,则只需运行npm i -g firebase-tools. 随着时间的推移,您应该努力保持最新状态,因为它经常变化。