当前位置: 首页 > 知识库问答 >
问题:

Firebase云功能部署错误,错误代码为“NoSuchKey”

姜智渊
2023-03-14

我试图从firebase CLI(8.12.1版)部署我的一个功能,但它一直失败。这个功能已经好几个星期没变了,所以我有点困惑为什么它现在失败了。

来自CLI的错误

函数[http api-(europe-west1)]:部署错误。生成失败:生成错误详细信息不可用。请在查看日志https://console.cloud.google.com/logs/viewer?project=

来自云控制台的日志

第3步——“恢复者”:从缓存中恢复“google.nodejs.functions framework:functions framework”的数据

第3步-“恢复程序”:\u001b[31;1mERROR:\u001b[0未能恢复:恢复数据:获取https://storage.googleapis.com/eu.artifacts..appspot.com/containers/images/sha256:484d08dfc6a8f356c34a86fa4440fedf86f4fc398967eea66e4aab4e9ee81e3d?access_token=REDACTED:不支持的状态代码404;正文:NoSuchKey指定的密钥不存在。没有这样的目标:欧盟。人工制品appspot。com/containers/images/sha256:484d08dfc6a8f356c34a86fa4440fedf86f4fc398967eea66e4aab4e9ee81e3d

已完成第3步——“修复者”

错误:生成步骤3“eu.gcr.io/fn img/buildpacks/nodejs10/builder:nodejs10_20201005_20_RC00”失败:步骤退出,状态为非零:46

有趣的部分可能是上面的错误:

<Error>
  <Code>NoSuchKey</Code>
  <Message>The specified key does not exist.</Message>
  <Details>No such object: eu.artifacts.<project-id>.appspot.com/containers/images/sha256:484d08dfc6a8f356c34a86fa4440fedf86f4fc398967eea66e4aab4e9ee81e3d</Details>
</Error>

builder指的是什么键<代码>

通过Firebase部署仅限函数进行部署:

该函数使用@google-云/存储获取存储资源的公共url。

我正在加载如下配置的服务帐户:


const devServiceAccount = require("../../service-accounts/dev.json");
const prodServiceAccount = require("../../service-accounts/prod.json");

export const getAdminConfig = (): (AppOptions | undefined) => {
  const baseConfigEnv = process.env.FIREBASE_CONFIG;
  if (!baseConfigEnv) {
    console.error("no firebase config environment");
    return undefined;
  }

  const app = functions.config().app;
  if (app === undefined) {
    console.error("no firebase app config");
    return undefined;
  }

  const serviceAccount = app.environment === 'dev' ? devServiceAccount : prodServiceAccount;
  const adminConfig = JSON.parse(baseConfigEnv) as AppOptions;
  adminConfig.credential = credential.cert(serviceAccount);

  return adminConfig;
}

这里使用的是云存储。

const options = {
    action: 'read',
    expires: Date.now() + 1000 * 60 * 60 //1 hour
  } as GetSignedUrlConfig;

const file = bucket.file(path);
filePathPromises.push(file.getSignedUrl(options))
  });

我的文件夹结构如下。

+ functions
  + lib
    + function.js
  + service-accounts
    + dev.json
    + prod.json
  + src
    + function.ts

我排除了服务号文件的问题,因为这些文件是加载在项目中所有函数的getAdminConfig()中的。

我已经验证了上传到GCF存储容器的文件。JSON密钥就在那里,并且位于正确的位置。路径匹配,因此应该在GCF运行时找到它们。

共有2个答案

庄实
2023-03-14

Firebase Cloud Functions或GCF中似乎存在间歇性问题。我刚刚运行了一次Firebase部署-只有函数,它成功地部署了。

富锦
2023-03-14

为下一个遇到这个问题的灵魂添加提示。似乎是由于还原/回滚过程中丢失/无法访问文件造成的。

我成功地通过以下方式消除了问题:

  1. 使用web Firebase控制台删除我的函数。
  2. 再次正常部署

 类似资料:
  • 1.grpc@1.20.0安装/users/me/desktop/appname/appname/functions/node_modules/grpc node-pre-gyp安装--fallback-to-build--library=static_library node-pre-gyp使用needle警告node-pre-gyp https下载 3.../ext/channel.cc:29

  • 我已经使用firebase云函数一段时间了,今天在代码中修复了一个小错误,在尝试部署时出现了以下错误。我取消了该更改,并尝试使用上次提交的稳定更改再次部署,但仍然是相同的错误。有什么解决办法吗?PS:这是一个typescript项目,我用tsc编译它。

  • 最近我的Firebase云函数经常出错。特别是当用户发布帖子并将帖子复制到用户所有追随者的提要集合时触发的功能。 我的代码是这样的: 直到最近,函数一直运行良好,但现在有些人有100个追随者,函数经常失败,有2个错误: 错误:进程已退出,代码为16 错误:超过4个截止日期:超过截止日期 我知道第一个错误意味着已经发送了一些类似头的信息,但我不知道我的函数有什么问题。我也知道firebase有一些写

  • ✔功能:功能文件夹上传成功 我正在开始发布过程(可能需要几分钟)... i函数:正在创建函数FollowerNotification. 其他一切工作都没有问题。只有当我试着用Firebase Firestore做东西的时候。

  • 希望这里有人能给我指明正确的方向。 谢谢!

  • 我有一个python云函数代码。来自GCS的txt文件,对其进行解析,并将行写入bigquery。当我试图从MacOS将此云功能部署到Google cloud时,它给出了以下错误 我已经验证了我的GCP项目中是否启用了Bigquery API。 GCloud函数部署sql_upload运行时python37触发器桶测试桶入口点load_sql