Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

firebaseMessaging.sendEachForMulticast: app/network-error

未关闭
#2,821 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
50/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
冷清
领域
backend

调研方向

从 issue 中所示的 firebaseMessaging.sendEachForMulticast 调用开始,在 development 模式下使用 firebase-admin 13.0.2 复现 app/network-error。将其行为与正常工作的 send 方法进行比较,并检查返回的响应。完成的标准是 multicast 发送成功且没有 HTTP/2 协议错误,或者已记录该失败并确认其原因及 workaround。

由索引模型根据 Issue 内容生成。

描述

api: messaging
export async function pushNotification({
  identifiers,
  body,
  metadata,
  title,
  link,
}: PushMessage) {
  try {
    logger.debug(`Push Notification: ${JSON.stringify(identifiers)}`);

    const userPreIdentifiers = identifiers.users;
    const teamPreIdentifiers = identifiers.teams;

    const userIdentifiers: string[] = [];

    if (userPreIdentifiers === "allUsers") {
      const allUserIdentifiers = await getAllUsersIdentifiers();
      userIdentifiers.push(...allUserIdentifiers);
    } else {
      const userTokens = await getUserIdentifiers({
        userRefs: userPreIdentifiers || [],
      });
      userIdentifiers.push(...(userTokens || []));
    }

    const teamIdentifiers = await getTeamIdentifiers({
      teamRefs: teamPreIdentifiers || [],
    });

    const tokens = [...(userIdentifiers || []), ...(teamIdentifiers || [])];
    logger.debug("All tokens:", tokens);
    if (tokens.length === 0) {
      logger.debug("No tokens found for push notification");
      return;
    }

    const message: MulticastMessage = {
      tokens,
      notification: {
        title,
        body,
      },
      data: metadata as { [key: string]: string },
      ...(link && {
        webpush: {
          fcmOptions: {
            link,
          },
        },
      }),
    };
    const response =
      await firebaseConfig.firebaseMessaging.sendEachForMulticast(message);

    logger.debug(
      `Successfully sent push notification: ${JSON.stringify(response)}`
    );
  } catch (error) {
    logger.error("Error sending push notification:", error);
  }
}
{"responses":[{"success":false,"error":{"code":"app/network-error","message":"Error while making request: Stream closed with error code NGHTTP2_PROTOCOL_ERROR. Error code: ERR_HTTP2_STREAM_ERROR"}}],"successCount":0,"failureCount":1}

I am using the "firebase-admin": "^13.0.2", sdk. The sendEachForMulticast not working on my development mode (did not try yet in production). However, if I am using the send method it will successfully push the notification.

主要语言
TypeScript
星标
1.8k
派生
422
平均合并
2 天 4 小时
30 天内合并 PR
18

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

firebase/firebase-admin-node 的其他 Issue

查看 firebase/firebase-admin-node 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。