Skip to Content
🎉 Nextra 4.0 已发布。dimaMachina 正在 寻找新工作或咨询机会 
文档文件约定mdx-components.js

mdx-components.js 文件

mdx-components 文件是必需的,您使用它通过 useMDXComponents 函数自定义样式。

示例

mdx-components.js 文件必须导出 一个名为 useMDXComponents 的单一函数

mdx-components.js
import { useMDXComponents as getThemeComponents } from 'nextra-theme-docs' // nextra-theme-blog or your custom theme // Get the default MDX components const themeComponents = getThemeComponents() // Merge components export function useMDXComponents(components) { return { ...themeComponents, ...components } }

错误

模块未找到:无法解析 'next-mdx-import-source-file'

要修复此问题,请更新 next.config 文件中的 turbopack.resolveAlias 部分:

Note
  • 如果您使用的是 Next.js < 15.3,请使用 experimental.turbopack.resolveAlias
  • 如果您使用的是 Next.js ≥ 15.3,请使用 turbopack.resolveAlias
next.config.mjs
import nextra from 'nextra' const withNextra = nextra() export default withNextra({ + turbopack: { + resolveAlias: { + // Path to your `mdx-components` file with extension + 'next-mdx-import-source-file': './src/mdx-components.tsx' + } + } })
Tip
  • 您可以将 mdx-components 文件保存在项目根目录,或在 src 目录中。
  • mdx-components 文件可以使用 .js.jsx.tsx 文件扩展名。
  • 导入 useMDXComponents 时,将其别名为 getMDXComponents,以避免 ESLint React Hooks 插件的误报错误。
react-hooks/rules-of-hooks
React Hook "useMDXComponents" cannot be called at the top level. React Hooks must be called in a React function component or a custom React Hook function.
Last updated on