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

升级Stackedit至ES6后遇Prism.js addSupport未定义错误求助

Stackedit升级ES6后PrismJS报错问题

我正在对Stackedit项目做更新,已经完成所有依赖升级并迁移到ES6规范。应用可以正常启动,但访问localhost:8080/app的Vue模块时,控制台出现如下错误:

Uncaught TypeError: Cannot read properties of undefined (reading 'addSupport')
    at prism.js:9669:1
    at ./node_modules/prismjs/prism.js (prism.js:9670:2)
    at __webpack_require__ (bootstrap:24:1)
    at fn (hot module replacement:62:1)
    at ./src/extensions/markdownExtension.js (markdownItTasklist.js:40:2)
    at __webpack_require__ (bootstrap:24:1)
    at fn (hot module replacement:62:1)
    at ./src/extensions/index.js (emojiExtension.js:13:3)
    at __webpack_require__ (bootstrap:24:1)
    at fn (hot module replacement:62:1)

错误复现步骤

  1. 克隆仓库
  2. Windows系统需安装Python 3.9及以上版本,以及Visual Studio桌面开发C++构建工具
  3. 执行npm install
  4. 执行npm start
  5. 在浏览器访问localhost:8080
  6. 点击“Start Writing”铅笔图标
  7. 页面空白,浏览器控制台出现上述错误

我尝试排查错误根源但未果,问题似乎与Webpack相关,但依赖安装过程无报错。请问这是否是PrismJS的Bug?

相关代码引用

1. markdownItTasklist.js:40:2

function attrSet(token, name, value) {
  const index = token.attrIndex(name);
  const attr = [name, value];

  if (index < 0) {
    token.attrPush(attr);
  } else {
    token.attrs[index] = attr;
  }
}

export default (md) => {
  md.core.ruler.after('inline', 'tasklist', ({ tokens, Token }) => {
    for (let i = 2; i < tokens.length; i += 1) {
      const token = tokens[i];
      if (token.content
        && token.content.charCodeAt(0) === 0x5b /* [ */
        && token.content.charCodeAt(2) === 0x5d /* ] */
        && token.content.charCodeAt(3) === 0x20 /* space */
        && token.type === 'inline'
        && tokens[i - 1].type === 'paragraph_open'
        && tokens[i - 2].type === 'list_item_open'
      ) {
        const cross = token.content[1].toLowerCase();
        if (cross === ' ' || cross === 'x') {
          const checkbox = new Token('html_inline', '', 0);
          if (cross === ' ') {
            checkbox.content = '<span class="task-list-item-checkbox" type="checkbox">&#9744;</span>';
          } else {
            checkbox.content = '<span class="task-list-item-checkbox checked" type="checkbox">&#9745;</span>';
          }
          token.children.unshift(checkbox);
          token.children[1].content = token.children[1].content.slice(3);
          token.content = token.content.slice(3);
          attrSet(tokens[i - 2], 'class', 'task-list-item');
        }
      }
    }
  })
}

2. src/extensions/index.js

import './emojiExtension.js';
import './abcExtension.js';
import './katexExtension.js';
import './markdownExtension.js';
import './mermaidExtension.js';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:10:51