JSON.stringify(this.editor.getComponents()) 错误
问题
版本: 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)
这里也是同样的错误......你有解决办法吗?
[编辑]目前降级似乎是唯一的解决办法
这里也有同样的问题,如果我在加载编辑器前先预处理组件并移除那个属性(__symbol),模板就能正常工作。
现在有没有办法暂时禁用这些符号@artf?
是的,不幸的是,之前版本的葡萄有个bug,导致符号不自愿出现。在当前版本中,这个bug已经修复,符号被禁用了,但不幸的是,如果你尝试加载一个包含由bug创建的符号引用的组件,仍然会出现这个问题。 我会在下一个版本中为这个问题添加补丁,目前我会听从Josè的建议,在加载编辑器前删除所有“__symbol”引用。
谢谢你举报,@mmotov。 错误 TypeError: e[M].getId 不是函数'。 发生在 ProseMirror 尝试访问属性时,尚未完全初始化组件生命周期。这是GrapesJS中常见的竞争条件。 立即解决办法: 如果你控制代码,可以用空检查包裹调用: “JavaScript 如果 (component && typeof component.getComponents === 'function') { 你的准则 } ``` 根本原因分析: ProseMirror 在调用 'getComponents()' 前不会验证状态。当多个操作同时发生时,这会造成时间上的脆弱性。 下一步...
相关问答
通过相似的问题讨论继续研究。
问题 #3731
文本元素在事件扩展后无法重复选择
版本:0.17.25 你能重现演示中的bug吗?[ ] 是的[x] 不 预期的行为是什么? 通过在视图中添加事件来更新现有的类型文本组件。 详细描述那个漏洞 事件正在添加,但一旦我选择了另一个组件,就无法回到第一个组件。该版本只能提交一次。 你能附上截图、截屏或实时演示吗?**...
问题 #4440
扩展文本组件会破坏可文本的块
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 版本 102.0.5005.115(官方构建)(64位)可复制演示链接 https://jsfiddle.net/trh1sbmk/17/描述一下那个虫子 如何复现这个漏洞?GoTo 提供的提琴。将“...
问题 #4416
无法用模板文字解析特征值(字符串插值)
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v103.0.5060.53 可复制演示链接 https://codesandbox.io/s/grapes-js-template-literal-1p7sx2?file=/src...
问题 #5297
GetJS 无法工作
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 版本 115.0.5790.171(官方构建)(64位)可复制演示链接 https://codesandbox.io/s/1r0w2pk1vl?file=/index.html描述一下那个虫子 如何复...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
Vanilla GrapesJS vs GrapesJS With Plugins: What You Actually Get Out of the Box (2026)
New to GrapesJS? See exactly what the stock editor gives you, where it falls short, and which plugins close the gaps — a beginner-friendly 2026 comparison
教程
GrapesJS DevTools: A Developer Panel Inside Your Editor
If you've ever debugged GrapesJS with console.log(editor.getSelected()) and a dozen throwaway event listeners — this post is for you.
教程
How We Built Composeit in Record Time Using GrapesJS Shadcn
Bypass foundational builder boilerplate and focus on what truly matters.
浏览插件分类
直接跳转到市场上的插件分类页面。