PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

GrapesJS 问题

已收录 3,464 个 GitHub 问题 370 个已解决 · 90 个待解决 搜索、筛选并探索经过实战检验的答案。

找到 3,464 个问题

#67362026年4月2日作者 HussainDeesa1 个回答
0 个反应

ProseMirror RTE 中列表/项目符号的问题,列表/项目符号不会自动缩进

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 克罗姆 可复制演示链接 https://codesandbox.io/p/sandbox/hrdwnl 描述一下那个虫子 预期的行为是什么? 添加项目符号时默认应该有缩进,点击Tab键时也应该有缩进。 目前的行为是什么? https://github.com/user-attachments/assets/af5f14c4-9988-4c53-a341-5955f6ef1643 行为准则 [x] 我同意遵守本项目的行为准则

GJS Helper

你遇到的列表/项目符号在 GrapesJS ProseMirror RTE 中不会自动缩进的问题是常见的样式问题,而不是 ProseMirror 核心列表处理的功能性错误。grapesjs-plugin-rte-prosemirror 插件正确集成了 ProseMirror 的列表模式,该模式负责你按 Tab 或 Shift + Tab时列表项的结构嵌套。不过,视觉缩进纯粹是 CSS 的问题。 根本原因 根本原因是,<ul>和<ol>元素的默认浏览器样式,通常提供缩进的pa...

#67232026年3月5日作者 tiburciomzt2 个回答
2 个反应

依赖性:grapesjs >=0.21.13 依赖于易受攻击的下划线版本

GrapesJS 版本 [x] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Edge,mozilla 可复制演示链接 匿名 描述一下那个虫子 下拍<=1.13.7 严重程度:高 下拍<=1.13.7 严重程度:高 Underscore在.flatten和.isEqual中具有无限递归,潜在的DoS攻击——https://github.com/advisories/GHSA-qpx9-hpmf-5gmw 修复可通过 npm audit fix --force 将安装 [email protected],这是个破坏性的变更 nodemodules/下划线 grapesjs >=0.21.13 这取决于underscore...

artf

谢谢你的报告@tiburciomzt 该凸起已合并,并将很快发布。

GJS Helper

你提到的grapesjs中underscore漏洞(GHSA-qpx9-hpmf-5gmw)的问题是合理的,涉及1.13.8之前underscore版本中的高严重度DoS漏洞。由于无限递归,该漏洞影响.flatten和.isEqual功能。 根本原因 GrapesJS本身并不会以通常暴露该漏洞的方式直接依赖underscore的核心功能。然而,underscore是GrapesJS的传递依赖。具体来说,GrapesJS依赖于backbone.js(例如grapesjs@0....

#67072026年2月13日作者 saeedhbi1 个回答
0 个反应

无法读取 Canvas 模块中空属性(读取“hasFocus”)的属性

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome(版本142-144)、Safari(版本16.3、26.1),可能还有其他版本 可复制演示链接 https://jsfiddle.net/saeedhbi/tqfe7p04/ 描述一下那个虫子 如何复现这个漏洞? 初始化 GrapesJS 编辑器(v0.22.11 或 v0.22.14) 在iframe完全加载前,按下键盘快捷键(例如Ctrl+Z、Delete或任意命令键) 命令系统在 iframe 准备好前调用 'Canvas.hasFocus()' 观察“类型错误:无法读取空属性(读取”hasFocus“)” 预期的行为是什...

GJS Helper

GrapesJS Canvas模块中的TypeError: Cannot read properties of null (reading 'hasFocus')是已知的问题,源于竞争条件。当键盘命令(如Ctrl+Z、删除)在编辑器的iframe文档完全加载前或被销毁/卸载后尝试调用editor.Canvas.hasFocus()时,就会出现这种情况。 根本原因 Canvas.hasFocus()方法内部调用this.getDocument().hasFocus()。thi...

#67062026年2月13日作者 saeedhbi3 个回答
0 个反应

TypeError:e.getRoot 不是函数(样式管理器中的竞态条件)

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 所有浏览器(Chrome、Safari、Firefox、Edge) 可复制演示链接 https://jsfiddle.net/saeedhbi/powxyjdq/3/ 描述一下那个虫子 如何复现这个漏洞? 初始化 GrapesJS 编辑器 选择画布中的一个组件 快速删除组件(按删除键或使用删除命令) 样式管理器的去跳出更新回调在组件被销毁后执行 注意“类型错误:e.getRoot 不是函数” 预期的行为是什么? 样式管理器应在尝试调用组件的方法前验证组件仍然有效。要么: 在处理前过滤掉损坏或无效的组件 在组件方法调用周围添加try-catch...

artf

和 https://github.com/GrapesJS/grapesjs/issues/6705 类似 我无法创建那种竞态条件(例如通过 API 选择和移除),在你的例子中是在组件上检查 getRoot,但组件 API 上没有这样的方法

saeedhbi

和 https://github.com/GrapesJS/grapesjs/issues/6705#issuecomment-3921025039 一样,问题出在我们外部库,使用 GrapesJS,因为遇到了类似 6705 问题的情况,我会关闭它。感谢你的评论。

GJS Helper

该TypeError: e.getRoot is not a function是GrapesJS风格管理器中已知的竞赛条件,尤其是在组件被快速选择后删除时。它发生是因为样式管理器的更新逻辑(去跳转后)试图访问在去跳跃函数执行时已被销毁或移除的组件的方法。 根本原因 去跳出的更新: GrapesJS风格管理器使用去跳出的函数来更新其UI(例如,选中组件或样式变更后,updateStyleView、updateTraitView)。这意味着事件(如选择)与更新逻辑实际执行之间存...

#67052026年2月13日作者 saeedhbi3 个回答
1 个反应

TypeError:无法读取键盘处理程序中未定义属性(读取“toLowerCase”)

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 所有浏览器(Chrome、Safari、Firefox、Edge) 可复制演示链接 https://jsfiddle.net/saeedhbi/tdsLa6qe/ 描述一下那个虫子 如何复现这个漏洞? 创建一个基础的GrapesJS编辑器(版本0.22.11或0.22.14) 向画布添加输入字段组件 聚焦输入场 发送一个键盘事件,其中“event.key”为“未定义”,用于IME作曲事件(主要是中文/日文/韩文键盘) 观察“类型错误:无法读取控制台中未定义属性(读为”toLowerCase“)” 预期的行为是什么? 键盘处理器应优雅地处理“e...

saeedhbi

你好@artf,在深入挖掘全栈跟踪后,我发现错误不在 GrapesJS 里。 “event.key.toLowerCase()”调用来自我们自己的应用代码——一个全局代码 'window.addEventListener(“keydown”, ...)我们在代码库中其他地方有处理程序, 与GrapesJS并行运行。因为我们的webpack构建将多个模块捆绑成同一个块 ('dist/1348'),哨兵框架具有误导性,我们错误地将来源归于GrapesJS。 GrapesJS 自...

artf

嘿,@saeedhbi,你在我们的代码里到底在哪里看到“event.key.toLowerCase()”?你确定不是你这边的吗? 可惜jsfiddle帮不上忙,感觉AI太粗糙😅,甚至连编辑器都加载不了。 也许你可以分享全栈的跟踪,看看具体发生在哪里?

GJS Helper

GrapesJS的键盘处理器中的TypeError: Cannot read properties of undefined (reading 'toLowerCase')是一个已知问题,当某些键盘事件,尤其是用于中文、日语或韩语等语言的输入法编辑器(IME)中,从GrapesJS画布的输入字段中发出时就会出现。根本原因是在 IME 组合过程中,event.key属性可以在提交字符前被合法地为keydown事件而undefined。GrapesJS的内部Keymaps模块试...

#67042026年2月13日作者 mehdimoslehi2 个回答
0 个反应

编辑器崩溃,模板无法加载(TypeError 读取类型)

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 143.0.7499.193 可复制演示链接 https://app.rechat.com/dashboard/marketing/history/Letter?printCampaignId=28f0587d-8738-4fd6-8087-da3167f6d737&action=edit 描述一下那个虫子 如何复现这个漏洞? 打开 Rechat Studio 编辑器,尝试加载/打开这个模板:https://app.rechat.com/dashboard/marketing/history/Letter?printCam...

artf

请提供一个独立且可复现的演示,原因看起来来自你的代码逻辑,而非核心

GJS Helper

GrapesJS编辑器在加载模板时会崩溃并出现TypeError: Cannot read properties of undefined (reading 'type'),原因是你试图加载的内容中HTML格式错误。具体来说,某些div元素有data-block属性但缺少data-type属性,这对GrapesJS正确识别和处理组件至关重要。 根本原因 GrapesJS解析你提供的HTML内容(通过editor.setComponents()或editor.load())来...

#66962026年2月4日作者 jasonvijayy1 个回答
0 个反应

在启用UndoManager的生命周期事件中调用component.replaceWith()时崩溃

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 铬 可复制演示链接 https://codepen.io/Logeshwaran-codepen/pen/raLJpYb 描述一下那个虫子 如何复现这个漏洞? 选择canvas中可用的组件。监听生命周期事件(例如 component:selected) 在事件处理程序内调用component.replaceWith() 执行撤销 预期的行为是什么? Undo 应安全恢复编辑器状态且无错误,GrapesJS 应提供支持的生命周期事件中替换组件的方法。 目前的行为是什么? 撤销崩溃是因为GrapesJS试图恢复一个已不存在组件的选择/状态。 问题...

GJS Helper

你遇到的问题是,在GrapesJS生命周期事件中执行同步DOM或组件树操作时,尤其是UndoManager处于激活状态时,是一个常见的陷阱。核心问题在于UndoManager的时序和状态管理。 根本原因分析 当你在component:selected事件处理程序中同步调用component.replaceWith()时,以下事件序列会导致崩溃: 组件选择:在画布中选择一个组件。 事件触发:component:selected事件被触发。 UndoManager 快照:在此点...

#66952026年2月2日作者 Axel3031 个回答
0 个反应

防止默认不适用于 Edge

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Edge 144.0.3719.92 可复制演示链接 https://jsfiddle.net/L61f0qtz/ 描述一下那个虫子 如何复现这个漏洞? 在 Microsoft Edge 中打开 GrapesJS 编辑器。 添加一个键位图,用于使用 Ctrl+S 或 Ctrl+Shift+S 保存,并使用 { prevent: true }。 专注于编辑器画布(或编辑器内的任何位置)。 按下快捷键(Ctrl+S 或 Ctrl+Shift+S)。 预期的行为是什么? GrapesJS 命令console.log(“保存”)应执行。 浏览器不应打...

GJS Helper

你遇到的 preventDefault() 在 Edge 中 Ctrl+S 和 Ctrl+Shift+MicrosoftS 无法正常工作,当GrapesJS画布聚焦时,这个问题与浏览器如何处理键盘事件和系统级快捷方式有关,这是常见的挑战。虽然 GrapesJS的 Keymaps 模块设计上防止默认操作,但其默认设置并未完全考虑画布 iframe 内的事件隔离。 根本原因 Iframe 事件隔离: GrapesJS 在一个iframe中渲染其可编辑画布内容。当你专注于画布并按...

#66902026年1月16日作者 HavokInspiration1 个回答
0 个反应

CSP违规

GrapesJS版本 [x] 我确认使用最新版本GrapesJS 你用的是什么浏览器? Chrome 143.0.7499.193 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 你好。 如何复现这个漏洞? 导入 JS 文件 / Node env 中的 GrapeJS : 在使用严格CSP规则的网页上,例如: 这样做会导致大量关于内联样式的CSP违规。 问题所在 我们正在考虑在SaaS产品的重大更新中使用GrapeJS,然而,我们面临着关于自由库和CSP规则的一个大问题。 我们的安全主管要求非常严格的CSP政策,而GrapeJS违反了这些政策。为了让GrapeJS与我们的基础规则正常...

GJS Helper

GrapesJS作为动态网页构建器,本质上依赖注入样式和操控 DOM,这确实可能导致内容安全政策(CSP)违规,尤其是在像你这样严格的规则下。让我们拆解这些问题并提出解决方案。 根本原因分析 <style>标签注入(style-src-elem违反): GrapesJS动态创建<style>元素以注入 CSS 规则,例如编辑器界面、画布 iframe 的基础样式以及组件特定样式(尤其是在启用 forceClass 时)。如果这些动态创建的 <style> 标签没有 nonc...

#66872026年1月13日作者 rhaarhoff1 个回答
0 个反应

依赖:主干撤销已弃用(NPM)——有什么替代方案吗?

GrapesJS版本 0.22.14(最新版本截至2025-11-20) 预期的行为是什么? GrapesJS 安装树中没有弃用依赖(或替换指南/路线图)。 现在的行为如何? 安装[email protected]会发出npm/pnpm弃用警告,因为它依赖于[email protected](在npm上弃用)。 繁殖步骤 PNPM [email protected](或 NPM I [email protected]) 注意主干网[email protected]的弃用警告 补充背景 这本身不是漏洞报告;这是维护/支持风险(供应链问题)。 相关历史问题:#3443 涉及下划线咨询路径;本报告专门讨论软件包弃用状态。 问题:是否有计划移除或替换骨干...

GJS Helper

安装GrapesJS时对[email protected]的弃用警告是关于依赖维护的一个合理担忧。让我们来分析一下情况及其对GrapesJS用户的影响。 根本原因:弃用依赖 GrapesJS 目前利用 backbone-undo 作为其核心的撤销/重做功能。该库提供了管理编辑器内更改历史的底层机制,允许用户回退或重新应用操作。backbone-undo包本身在 npm 上被标记为弃用,安装时会触发警告。 影响与风险评估 虽然弃用警告通常应被认真对待,但backbone-...

浏览所有主题