cherry-markdown icon indicating copy to clipboard operation
cherry-markdown copied to clipboard

[Bug Report] build failure w/ esbuild

Open serializedowen opened this issue 1 year ago • 7 comments

Prerequisites

Describe the Bug

image

jsdom的依赖whatwg-url使用了async generator,导致esbuild下打包失败。 另,sanitize不建议用jsdom做 太重了。

Reproduction Steps

No response

System Information

No response

Contributing

None

serializedowen avatar Feb 05 '24 06:02 serializedowen

jsdom 是为了在 node 环境下使用 DOMPurify 做 HTML 清洗而引入的。如果是 web 环境的构建不应该走到这个逻辑,可以检查是否引用错误。

esbuild 不支持 async generator 建议是在 esbuild 社区寻找相关解决方案。


如果有更优的标签清洗方案也欢迎贡献 PR 哈,我们也在持续寻找替代方案。

lyngai avatar Feb 05 '24 06:02 lyngai

另外,在 esbuild 社区找到 async generator 相关兼容的 PR,可以考虑升级构建工具链的版本试试。https://github.com/evanw/esbuild/pull/3194

lyngai avatar Feb 05 '24 06:02 lyngai

另外,在 esbuild 社区找到 async generator 相关兼容的 PR,可以考虑升级构建工具链的版本试试。evanw/esbuild#3194

是的,构建工具链依赖的旧版本的esbuild 比较棘手

serializedowen avatar Feb 05 '24 07:02 serializedowen

jsdom 是为了在 node 环境下使用 DOMPurify 做 HTML 清洗而引入的。如果是 web 环境的构建不应该走到这个逻辑,可以检查是否引用错误。

esbuild 不支持 async generator 建议是在 esbuild 社区寻找相关解决方案。

如果有更优的标签清洗方案也欢迎贡献 PR 哈,我们也在持续寻找替代方案。

image 业务代码里是用了纯engine解析模式,```cherry-markdown.core.common.js ``` 文件里就有jsdom引入的逻辑。

serializedowen avatar Feb 05 '24 07:02 serializedowen

业务代码里是用了纯engine解析模式,cherry-markdown.core.common.js 文件里就有jsdom引入的逻辑。

错了哈。.common.js 后缀的都是给 node 环境使用的。样例里面引入的是 cherry-markdown.engine.core.js,这个才是给 web 使用的。

lyngai avatar Feb 05 '24 07:02 lyngai

业务代码里是用了纯engine解析模式,cherry-markdown.core.common.js 文件里就有jsdom引入的逻辑。

错了哈。.common.js 后缀的都是给 node 环境使用的。样例里面引入的是 cherry-markdown.engine.core.js,这个才是给 web 使用的。

!是这样吗。。自动补全的代码里面是common 我都没注意你们这里common是cjs

serializedowen avatar Feb 05 '24 07:02 serializedowen

表格供参考,后续补充到项目 README。

前缀 后缀 模块 语言版本 UI 核心引擎 大体积依赖
(mermaid等)
建议使用环境 免构建用于生产
cherry-markdown .js umd es5 Web
cherry-markdown .esm.js esm es2015 Web
cherry-markdown .min.js umd es5 Web
cherry-markdown.core .js umd es5 Web
cherry-markdown.core .common.js cjs es5 Node
cherry-markdown.engine.core .js umd es5 Web
cherry-markdown.engine.core .esm.js esm es2015 Web
cherry-markdown.engine.core .common.js cjs es5 Node

lyngai avatar Feb 05 '24 07:02 lyngai