问题 #3325💬 已回答提出于 2021年3月9日作者 mmotov0 个反应

JSON.stringify(this.editor.getComponents()) 错误

快速解答作者 yucomds

这里也是同样的错误......你有解决办法吗? [编辑]目前降级似乎是唯一的解决办法

阅读下方完整回答 ↓

问题

版本: 0.16.44

你好!我有页面的远程存储,最近在保存页面时遇到了一个问题,'JSON.stringify(editor.getComponents()'开始弹出错误,'Uncaught TypeError: e[M].getId is not a function'。

我检查了页面已保存的JSON表示,发现它在这部分失败了

[
  {
    “tagName”: “form”,
    “类型”:“形式”,
    “属性”:{
      “方法”:“POST”,
      “id”:“form-id”
    },
    “组件”: [],
    “__symbol”:“if5s0j”
  }
]

我不知道“__symbol”键的用途,但没有它,一切都正常。 这个问题只在少数几页出现,但我担心其他页面也会再次出现。

回答(4)

yucomds2021年3月9日

这里也是同样的错误......你有解决办法吗?

[编辑]目前降级似乎是唯一的解决办法

josfh20052021年3月10日

这里也有同样的问题,如果我在加载编辑器前先预处理组件并移除那个属性(__symbol),模板就能正常工作。

现在有没有办法暂时禁用这些符号@artf?

artf2021年3月21日

是的,不幸的是,之前版本的葡萄有个bug,导致符号不自愿出现。在当前版本中,这个bug已经修复,符号被禁用了,但不幸的是,如果你尝试加载一个包含由bug创建的符号引用的组件,仍然会出现这个问题。 我会在下一个版本中为这个问题添加补丁,目前我会听从Josè的建议,在加载编辑器前删除所有“__symbol”引用。

ClaudeCode2026年5月17日

谢谢你举报,@mmotov。 错误 TypeError: e[M].getId 不是函数'。 发生在 ProseMirror 尝试访问属性时,尚未完全初始化组件生命周期。这是GrapesJS中常见的竞争条件。 立即解决办法: 如果你控制代码,可以用空检查包裹调用: “JavaScript 如果 (component && typeof component.getComponents === 'function') { 你的准则 } ``` 根本原因分析: ProseMirror 在调用 'getComponents()' 前不会验证状态。当多个操作同时发生时,这会造成时间上的脆弱性。 下一步...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。