GrapesJS 问题

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

找到 545 个问题

🔍 typescript
#51492023年5月29日作者 jchautreux4 个回答
0 个反应

无名插件和选项

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 全部都没有,bug出在构建过程中 可复制演示链接 没必要 描述一下那个虫子 如何复现这个漏洞? 使用 NPM 安装 GrapesJS,以便在 TypeScript 项目中使用。 根据文档,要设置非命名插件的选项,我们必须在“init”中定义: 预期的行为是什么? 项目建设顺利进行 目前的行为是什么? 构建失败时出现了以下错误:“计算出的属性名称必须是类型为'string'、'number'、'symbol'或'any'。” 供参考 我们可以使用命名插件,但这种做法是将“弃用”标记为非命名版本 且不能用于官方插件,因为这些插件是无名的行为准则 [X]...

artf

这似乎和 https://github.com/microsoft/TypeScript/issues/35945 有关 作为一个临时的变通方法,你可以先这样做: “''js pluginsOpts: { [myPlugin.toString()]: { customField: 'customValue' } }

jchautreux

听起来是个好主意

artf

添加了辅助工具[这里](https://github.com/GrapesJS/grapesjs/commit/7d5d074e4d2735245541bfcbaad666e7bc37ea56)(我稍后也会更新文档中的使用情况)

#51482023年5月29日作者 jchautreux4 个回答
0 个反应

官方的 GrapesJS 插件都无法与新index.d.ts兼容

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 全部都没有,bug出在构建过程中 可复制演示链接 没必要 描述一下那个虫子 如何复现这个漏洞?创建一个空白项目使用 NPM 安装 GrapesJS 和一个插件(本例为预设网页,但对所有官方插件“有效”)用“import GrapeJS from 'grapesjs”加载 GrapesJS尝试使用'从'grapesjs-preset-webpage'导入插件'加载'preset-webpage'; 预期的行为是什么? 项目正确构建,插件可用 目前的行为是什么? 项目未能建成,因为GrapeJS的 d.ts 发生了变化 供参考 我本可以在每个官方插件里创...

artf

我决定以 https://github.com/GrapesJS/grapesjs/issues/5149 相关为由结束此事

jchautreux

这其实不是同一个问题,在#5149中,bug是关于如何在工具初始化时设置插件选项。 这里的漏洞与项目最后一次更新有关,该更新定义了一个新index.d.ts,但该新代码与之前插件使用方式不兼容

artf

在上一个版本中,'index.d.ts' 插件签名是一样的,所以我不确定你说的是什么变化 https://github.com/GrapesJS/grapesjs/blob/095466c8cc8034e54888d67beef4cb9296c823e4/index.d.ts#L50-L53 你能分享一下组装过程中的具体错误吗?

#51442023年5月25日作者 duclet3 个回答
1 个反应

PanelManager.addPanel 的类型定义错误

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 全部 可复制演示链接 没有 描述一下那个虫子 函数定义如下:https://github.com/GrapesJS/grapesjs/blob/v0.21.1/src/panels/index.ts#L82,需要以完整面板实例或属性数组的形式给出数据。网站上的文档(https://grapesjs.com/docs/getting-started.html#panels-buttons)说给出的参数只能是一个具有属性的对象(本质上是面板属性的部分)。 行为准则 [X] 我同意遵守本项目的行为准则

duclet

@artf - 你没读完整句子。你可以清楚地看到代码本身,它要求作为完整的“面板”对象给出的参数。在你的文档(如链接所示)中,你并没有给它完整的“面板”对象,而是给它一个带有这些项目的对象。你的例子如下: TypeScript 会抱怨的是,分配给它的对象既不是“面板”的实例,也不是对象属性的数组。

artf

网站上的文档说给出的参数只能是具有以下属性的对象 抱歉,你具体在哪里读到这句话?

ClaudeCode

谢谢你举报,@duclet。 PanelManager.addPanel 类型定义错误的问题似乎是竞赛条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤:** 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)——这有...

#51412023年5月24日作者 rajevar3 个回答
1 个反应

组件在更新性状时重置属性值(仅首次)

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 113.0.5672.63 可复制演示链接 https://jsfiddle.net/rajevar/zLs8q97f/4/ 描述一下那个虫子 这是针对这次讨论 https://github.com/GrapesJS/grapesjs/discussions/4759 如何复现这个漏洞? https://jsfiddle.net/rajevar/zLs8q97f/4/从块中选择Text CAT:Basic组件,拖曳到画布。 步骤1之后的代码2. HTML '<div class=“text-primary” id=“ixci”>将...

rajevar

抱歉,是我错了。我没用最新的。

artf

@rajevar我无法用最新版本复现,你确定你用的是最新版本吗?

ClaudeCode

谢谢你举报,@rajevar。 关于组件在更新特质时重置属性值(仅首次)的好问题。推荐的 Canvas 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something chan...

#51352023年5月22日作者 duclet2 个回答
0 个反应

StyleManager.addProperty 的类型定义错误

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 全部 可复制演示链接 没有 描述一下那个虫子 如何复现这个漏洞?根据这里的定义:https://github.com/GrapesJS/grapesjs/blob/dev/src/stylemanager/index.ts#L304,你应该把选项作为“PropertyProps”的“选项”来提供。然而,这里定义的“PropertyProps”:https://github.com/GrapesJS/grapesjs/blob/dev/src/stylemanager/model/Property.ts#L9,并不具备这样的属性。这导致TS编译器开始抱...

SachinPuthiyoth

看起来 StyleManagerConfig.sectors 中的类型定义没有变化 : https://github.com/GrapesJS/grapesjs/blob/5c890449a52f526bc480d6dc649ff5e01ec59140/src/stylemanager/config/config.ts#L8 我们是不是应该更新它,使用像 PropertyTypes 这样的功能: https://github.com/GrapesJS/grapesjs/bl...

ClaudeCode

谢谢你举报,@duclet。 关于 StyleManager.addProperty 类型定义错误的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console....

#51312023年5月20日作者 sdimitrenco2 个回答
0 个反应

JSON.stringify 之后,组件并非所有字段都存在

葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? 铬可复制演示链接 https://jsfiddle.net/sdimitrenco/rn8u4pc0/7/描述一下那个虫子 我不确定这是不是bug,但对我来说,这种行为看起来很奇怪 我有一个组件列表,包含组件ol和组件LI。 那个代码,代表阻挡 组件列表的模型 这个模型用于 ol 分量 以及锂分量的模型 如你所见,所有模型都包含类型和标签名称,在 Grapes 内部也正常,但如果我尝试转换成 json,比如 JSON.stringify(this.grapesInstance.getComponents()),我有 json 丢失了带标签名的所有字段,看...

artf

如果属性的值与默认定义相同,则跳过。这由 ['avoidDefaults'](https://github.com/GrapesJS/grapesjs/blob/e217dc75d463a84333ee4d9f37216f4f56c77024/src/editor/config/config.ts#L250-L256) 配置选项控制,强烈建议尽量保持 JSON 小。

ClaudeCode

谢谢你举报,@sdimitrenco。 After JSON.stringify 组件没有所有字段的问题似乎是竞态条件或状态管理时序问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(CodeSandbox)...

#51102023年5月13日作者 yashvi20262 个回答
0 个反应

“enableEditing”附加在视图上,你可以从模型中获取它的实例,所以选择该组件,在控制台“editor.getSelected().view.enableEditing()”中执行。

我正在获得 editor.getSelected().view.enableEditing();不是函数

artf

请避免在未遵循问题模板的情况下打开错误问题。 你可以用一个合适的描述和用例来开启新的讨论。

ClaudeCode

谢谢你举报,@yashvi2026。 感谢你分享关于'enableEditing'被附加到视图上的报告,你可以从模型中获取它的实例,所以选择组件,在控制台'editor.getSelected().view.enableEditing()'中运行。为了帮助团队调查并优先排序: 请提供: 一个最小可复现的例子(CodeSandbox/JSFiddle) 你的GrapesJS版本号 浏览器和操作系统信息 浏览器控制台的任何错误信息 重现问题的步骤 最有帮助的是什么: 简约代码示...

#51052023年5月11日作者 Baghunts2 个回答
1 个反应

用(prop,value)来添加style o component,是不正确的工作。

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome@latest 可复制演示链接 https://no-link.com 描述一下那个虫子 ![图片](https://github.com/GrapesJS/grapesjs/assets/133208978/3a5ce51a-fedf-4fd7-9063-a5af519690b9) ![图片](https://github.com/GrapesJS/grapesjs/assets/133208978/0b990b40-94b1-48c1-94dc-c4d81adf0368)行为准则 [X] 我同意遵守本项目的行为准则

artf

谢谢@Baghunts,发现得很好。目前的解决方法是 '.addStyle({ 'border-left': '...' })`

ClaudeCode

谢谢你举报,@Baghunts。 通过(prop, value)添加style o component的问题,工作不正确。似乎是竞态条件或状态管理时序的问题。这通常发生在组件生命周期事件和DOM修改重叠时,导致状态不一致。 尝试什么: 添加setTimeout包装器以确保DOM已稳定: “JavaScript setTimeout(() => { 你在这里的行动 }, 0); 推荐的下一步步骤: 如果还没测试过,请用最新的GrapesJS版本测试 提供最小可重复的示例(Co...

#50902023年5月3日作者 FaisalShaikhHA2 个回答
1 个反应

组件脚本函数在保存页面后运行两次

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 112.0.5615.137(官方配置)(arm64) 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 组件定义: 丢弃、保存和重新加载时,有两个地方调用的是同一个脚本。一个在保存的 HTML/JSON 里,另一个是 Grapesjs 自己添加的。 如何复现这个漏洞?添加带有脚本函数的自定义组件类型。放下它并保存页面。重新加载页面时,脚本函数运行两次。 预期的行为是什么? 脚本函数应该只运行一次。 目前的行为是什么? 脚本函数运行两次。行为准则 [X] 我同意遵守本项目的行为准则

artf

正如[这里](https://grapesjs.com/docs/modules/Storage.html#project-data)解释的,编辑项目时不应重新导入输出HTML,只需导入JSON。

ClaudeCode

谢谢你举报,@FaisalShaikhHA。 关于组件脚本函数在保存页面后运行两次,这个问题非常好。推荐的组件方法是使用事件驱动的API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something ch...

#50892023年5月2日作者 davidrhoderick3 个回答
0 个反应

在SCSS中导入codemirror库时出现错误

葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Firefox 112.0.1 可复制演示链接 https://github.com/davidrhoderick/grapesjs-test 描述一下那个虫子 如何复现这个漏洞?跟随入门(你可以用Typescript和SCSS看到我用一个基础的Parcel项目来理解的结构)当你进入“主题”步骤时,尝试导入Grapes SCSS时会报错。 预期的行为是什么? 只要我按照“入门教程”操作,一切都能正常工作。 目前的行为是什么? 当我进入应该允许我用SCSS自定义应用外观的步骤时,出现了以下错误: “壳” @parcel/transformer-sass...

davidrhoderick

有趣的是,基于CSS的样式确实有效。

artf

看起来 Parcel 变换器试图导入的是 'codemirror/lib/codemirror.js',而不是 'codemirror/lib/codemirror.css': “''CSS @import“codemirror/lib/codemirror”; ``` 所以我建议你在相关包裹上开启问题

ClaudeCode

谢谢你举报,@davidrhoderick。 关于在SCSS中导入codemirror库出错的好建议!虽然这个具体功能还没有出现在核心 API 中,但有几种方法可以实现类似的行为。 使用事件系统: “JavaScript editor.on('component:update', (component) => { 你的逻辑 }); ``` 替代方法: 听取“selector:add”以获取CSS选择器更改 使用“selector:custom”来表示自定义规则 利用“cha...

浏览所有主题