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

windowPostMessageTransport throws when an unrelated postMessage has null data

未关闭 适合新手
#108 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

@omerbek 已经在做这个了。

开始于 2026年8月25日。

  • #109 来自 @omerbek —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
74/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
typescript
领域
api, frontend

调研方向

找到 getWindowPostMessageTransport 的实现,并检查由 connect() 安装的消息监听器。使用 data 为 null 或 undefined 的消息事件重现该问题,然后验证非对象 payload 会被忽略,同时现有的 target、stream、origin 和 MetaMask 消息处理保持不变。

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

描述

What happened?

getWindowPostMessageTransport().connect() installs a global window.addEventListener('message', ...) listener. That listener receives every postMessage on the page, including messages sent by unrelated scripts or iframes.

The current listener destructures event.data before validating it:

const { target, data } = event.data;

If another page script sends a valid postMessage with null or undefined data, this throws a TypeError before the listener can ignore the unrelated message.

Minimal reproduction

After connect() has registered the message listener, dispatching a message shaped like this is enough to trigger the crash:

messageHandler({
  data: null,
  origin: location.origin,
} as MessageEvent);

Expected: unrelated/non-object message payloads are ignored, the same as wrong target/stream/origin messages.

Actual: the listener throws while destructuring event.data.

Suggested fix

Add a small guard before destructuring:

if (!event.data || typeof event.data !== 'object') {
  return;
}

This keeps the existing MetaMask message handling unchanged while preventing unrelated page messages from surfacing avoidable listener errors.

主要语言
TypeScript
星标
1
派生
4
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 有 Pull Request 模板
  • 没有贡献指南

从这里开始

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

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

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