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

在Next.js 13中使用MDX出现useContext错误的解决方法

解决Next.js 13 App Router中MDX页面的createContext客户端组件错误

问题原因

MDX依赖的@mdx-js/react库内部使用了React Context API,而Next.js 13 App Router下的页面默认是服务器组件,Context API无法在服务器组件中运行,因此触发该错误。

解决方法

方法1:直接在MDX页面添加客户端指令

在你的page.mdx文件最顶部添加"use client"指令,将该MDX页面标记为客户端组件:

"use client"

# Title

方法2:使用客户端组件包装MDX内容(可选)

如果不想直接修改MDX文件,可以创建一个客户端组件作为包装器,再导入MDX内容:

  1. 创建app/docs/components/accordion/MDXClientWrapper.jsx:
"use client"
import AccordionMDX from './page.mdx'

export default function MDXClientWrapper() {
  return <AccordionMDX />
}
  1. 将原page.mdx重命名为content.mdx,确保路由指向客户端包装器组件(保持page.jsx作为入口)。

额外检查

确认你的next.config.js配置正确,当前配置已经开启了App Router支持并注册了MDX扩展,无需修改:

const withMDX = require('@next/mdx')({
  extension: /\.mdx?$/,
  options: {
    remarkPlugins: [],
    rehypePlugins: [],
  },
})

/** @type {import('next').NextConfig} */
const nextConfig = {
  pageExtensions: ['ts', 'tsx', 'js', 'jsx', 'md', 'mdx'],
  experimental: {
    appDir: true,
  },
}

module.exports = withMDX(nextConfig)

内容的提问来源于stack exchange,提问作者Felipe Gouvêa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:35:00