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

基于Nx的Angular项目用@storybook/addon-docs配置MDX支持失败

解决方案

1. 确认依赖版本匹配

你使用的Storybook 6.3.x 仅支持 MDX v1,需先安装对应版本的依赖,避免版本不兼容问题:

  • 所有@storybook/开头的包统一锁定为6.3.7版本
  • 安装@mdx-js/loader@1.x、@mdx-js/react@1.x,禁止安装2.x版本
  • 确保已经安装@storybook/addon-docs@6.3.7

2. 修正main.js配置

你当前手动添加的MDX webpack规则会和@storybook/addon-docs内置的预设规则冲突,直接删除自定义的MDX处理规则,同时在addons数组中显式引入addon-docs预设即可,修改后的配置参考:

const rootMain = require('../../../.storybook/main');

module.exports = {
  ...rootMain,

  core: { ...rootMain.core, builder: 'webpack5' },

  stories: [...rootMain.stories, '../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'],
  // 显式添加addon-docs预设
  addons: [...rootMain.addons, '@storybook/addon-docs'],
  webpackFinal: async (config, { configType }) => {
    if (rootMain.webpackFinal) {
      config = await rootMain.webpackFinal(config, { configType });
    }

    // 删除原有的.mdx处理规则,保留source-loader即可(如果需要展示源码)
    config.module.rules.push({
      test: /\.(stories|story)\.[tj]sx?$/,
      loader: require.resolve('@storybook/source-loader'),
      exclude: [/node_modules/],
      enforce: 'pre',
    });

    return config;
  },
};

3. 确认preview.js无冲突

你当前的preview.js配置本身是正确的,只需确认根目录下的../../../.storybook/preview.js中没有覆盖docs参数的配置即可,如果有全局docs配置,需要和当前配置合并。

4. Nx环境额外校验

  • 检查工作区根目录的babel.config.json是否包含@babel/preset-env预设,确保支持ES模块解析
  • 确认你的MDX文件命名符合匹配规则,必须以.stories.mdx为后缀
  • 首次修改配置后,需清空Storybook缓存重启:执行nx run your-project-name:storybook --clearCache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:02