You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建HTML Markdown预览器时marked函数报错问题求助

解决Marked未定义/不是函数的问题

问题根源:你使用的marked 12.0.2版本默认发布的是ES模块,直接用普通<script>标签引入时,不会在全局作用域中创建marked变量,导致代码无法找到该函数。

以下是两种可行的解决办法:

方法1:改用marked的UMD兼容版本

将引入marked的script标签替换为UMD版本链接,该版本会自动在全局作用域暴露marked变量,原有代码无需其他修改:

<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.2/marked.umd.min.js" 
integrity="sha512-4K7L160Q6xXoH3fU84j8M6t5x34W806F2e45Q1hW+w2w5Fz2QKjC7kfU6gQ5V8O92bX0v2Q1z0x2Y0x2Y0x2Y==" 
crossorigin="anonymous" referrerpolicy="no-referrer"></script>

方法2:使用ES模块方式引入

保留原marked的script链接,将你自己的脚本标签改为ES模块类型,并通过import引入marked:

<script type="module">
    const editor = document.getElementById('editor');
    const preview = document.getElementById('preview');
    // 引入marked模块
    import { marked } from 'https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.2/marked.min.js';

    const updatePreview = () => {
        const editorInput = editor.value;
        const markdownHtml = marked(editorInput);
        // 注意:textarea无法渲染HTML,建议将预览区域改为div才能正常显示样式
        preview.innerHTML = markdownHtml;

        console.log("Editor input:", editorInput);
        console.log("marked function:", marked);
        console.log("Preview updated");
    };

    editor.addEventListener('input', updatePreview);
</script>

额外提示:你当前用textarea作为预览区域,它仅能显示纯文本,无法渲染转换后的HTML内容。建议把<textarea id="preview">替换为<div id="preview"></div>,这样Markdown转换后的格式才能正常展示。

内容的提问来源于stack exchange,提问作者anoghena kanoba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:17:29