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

调用Framework.store方法触发Cannot set properties of undefined报错如何修复

问题解决

报错根因

你没有提前初始化window.fStore全局对象,当Framework.store方法执行赋值操作window.fStore[key] = value时,window.fStore本身是undefined,对undefined设置属性自然会抛出类型错误。

同时你的代码还存在额外逻辑缺陷:DOM遍历逻辑在framework.js加载时就会同步执行,此时你还没有调用Framework.store存入值,就算修复了报错,页面的f-text绑定也不会生效。

修复方案

修改你的framework.js代码如下:

// 初始化全局存储对象
window.fStore = window.fStore || {};

// 抽离DOM更新公共方法
function updateDomBindings() {
  document.querySelectorAll('*').forEach((element) => {
    if (element.hasAttribute('f-text')) {
      const textValue = element.getAttribute('f-text');
      element.innerHTML = window.fStore[textValue] || '';
    }
  });
}

window.Framework = {
  store: (key, value = '') => {
    if (value === '') {
      return window.fStore[key];
    }
    window.fStore[key] = value;
    // 存值后主动触发DOM更新,保证页面内容同步
    updateDomBindings();
  }
}

// 页面加载完成后自动执行一次绑定,兼容提前写入存储的场景
document.addEventListener('DOMContentLoaded', updateDomBindings);

修复说明

  • 提前初始化window.fStore为空对象,避免赋值时找不到对象的报错
  • 将DOM更新逻辑抽成独立方法,每次调用store存值后主动触发更新,保证数据变更后页面同步刷新
  • 增加页面加载完成后的自动绑定逻辑,如果你提前在全局存了值也能正常渲染

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:27:01