You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React运行报错TypeError: Cannot read properties of undefined (reading 'name')如何排查

问题根因

报错触发的直接原因是代码在currentPackage为undefined的场景下,直接访问了其name属性,JS 不允许读取 undefined/ null 类型值的属性,因此抛出 TypeError。

解决方案

提供三种可直接落地的修复方式,可根据项目场景选择:

  • 方案1:使用可选链做安全访问(适配 ES2020+ 项目,改动量最小)
    直接在currentPackage后加?.标识可选访问,当currentPackage为 undefined 时会直接短路返回 undefined,不会执行后续逻辑,修复后的代码如下:

    const packageLogo = currentPackage?.name && currentPackage?.logo && (
      <div className="vk-inductee-button-wrapper">
        <div className="vk-inductee-button-image-wrapper">
          <img
            src={currentPackage.logo}
            className="vk-inductee-button-image"
            alt="inductee-img"
          />
        </div>
        <div className="vk-inductee-button-label">
          <span>{currentPackage.name}</span>
        </div>
      </div>
    );
    
  • 方案2:提前判断currentPackage是否存在(适配不支持可选链的旧项目)
    在原有判断逻辑最前面加一层currentPackage存在性校验:

    const packageLogo = currentPackage && currentPackage.name && currentPackage.logo && (
      // 原有JSX逻辑保持不变
    )
    
  • 方案3:给currentPackage设置默认兜底值
    解构props时给currentPackage赋值空对象作为默认值,就算上层没传该参数也不会出现undefined:

    const {
      hasAccounts,
      asideClassesFromConfig,
      disableScroll,
      htmlClassService,
      currentPackage = {}, // 新增默认值配置
      user,
    } = this.props;
    
额外排查建议

如果业务逻辑要求currentPackage必须有值,建议同步排查上层组件逻辑:

  1. 是否是异步接口请求currentPackage数据还没返回时,就已经渲染了当前组件
  2. 上层传递props时是否漏传了currentPackage参数

内容的提问来源于stack exchange,提问作者user3480473

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:54:04