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

Next.js中MDX博客rehype-slug未给标题添加ID问题排查

解决rehype-slug未给Next.js MDX标题添加ID的问题

可能的原因及排查步骤

1. 检查MDX文件的标题写法

rehype-slug仅识别原生Markdown标题语法(如## Second heading),如果你的MDX中用了自定义标题组件(比如<Heading level={2}>Second heading</Heading>),插件无法识别并生成ID。确保使用标准Markdown标题格式:

## Second heading

2. 验证依赖版本兼容性

@next/mdx与rehype-slug版本不匹配可能导致功能失效,执行命令更新到兼容版本:

npm update @next/mdx rehype-slug rehype-autolink-headings

3. 排查插件执行顺序或冲突

rehype插件按数组顺序执行,确保没有其他rehype插件在rehype-slug之前修改、移除标题元素。若有其他插件,调整顺序让rehype-slug优先执行。

4. 清除Next.js缓存并重启服务

开发缓存可能导致配置未生效,按以下步骤操作:

  • 停止当前开发服务器
  • 删除项目根目录下的.next文件夹
  • 重新启动服务器:npm run dev

5. 检查自定义MDX组件的属性传递

如果用useMDXComponents自定义了标题组件,需确保组件传递了所有原生props(包括rehype-slug生成的id):

import { useMDXComponents } from '@mdx-js/react'

export function useCustomMDXComponents() {
  const components = useMDXComponents()
  return {
    ...components,
    h2: (props) => <h2 {...props}>{props.children}</h2>,
  }
}

在MDX布局组件中使用该自定义组件集合,确保ID属性被正确传递到DOM元素。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:00:08