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

如何配置Storybook 7.4支持Next.js 13.4的@/路径导入语法?

解决Storybook 7.4识别Next.js 13.4 @/路径别名的问题

完全可行,不需要替换实际路径,通过配置Storybook的webpack解析规则就能让它支持Next.js的@/路径别名,具体步骤如下:

方法一:手动配置webpack别名

  1. 打开项目根目录下的.storybook/main.js(或.storybook/main.ts)文件
  2. 在配置中添加webpackFinal字段,手动设置路径别名:
const path = require('path'); // JS文件用此写法,TS文件用`import path from 'path';`

module.exports = {
  stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
  addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
  framework: {
    name: '@storybook/nextjs',
    options: {}
  },
  webpackFinal: async (config) => {
    // 扩展webpack的别名配置
    config.resolve.alias = {
      ...config.resolve.alias,
      '@': path.resolve(__dirname, '../src'), // 路径需对应你项目中@指向的实际目录,比如根目录下的src
    };
    return config;
  },
};

方法二:复用Next.js的tsconfig/jsconfig路径配置

如果你的项目已经在tsconfig.json(或jsconfig.json)中配置了@的路径映射(示例如下):

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}

可以通过插件让webpack自动读取这些配置,无需重复写别名:

  1. 安装依赖:
npm install tsconfig-paths-webpack-plugin --save-dev
  1. 修改.storybook/main.js:
const path = require('path');
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');

module.exports = {
  // 其他原有配置...
  webpackFinal: async (config) => {
    config.resolve.plugins = [
      ...(config.resolve.plugins || []),
      new TsconfigPathsPlugin({
        configFile: path.resolve(__dirname, '../tsconfig.json'), // 指向你的tsconfig文件路径
      }),
    ];
    return config;
  },
};

最后一步:重启Storybook

关闭当前运行的Storybook服务,重新执行npm run storybook,此时@/开头的导入语句就能被正确解析,不会再出现ModuleNotFoundError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:05:11