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

Next.js 14中next/image组件在Storybook无法加载的问题

解决Next.js 14中Storybook无法加载next/image图片的问题

问题分析

你遇到的核心问题是:Storybook的Next.js插件对next/image的资源解析逻辑和Next.js本身不一致,同时你尝试添加的image配置选项在当前插件版本中不存在,导致类型错误。

解决方案

1. 升级Storybook Next.js插件到最新版本

image配置选项是较新版本的@storybook/nextjs才引入的,旧版本没有对应的类型定义。执行以下命令升级:

npm install @storybook/nextjs@latest --save-dev
# 或使用yarn
yarn add @storybook/nextjs@latest --dev
# 或使用pnpm
pnpm add @storybook/nextjs@latest -D

2. 配置Storybook静态资源目录

Storybook默认不会自动识别Next.js的public目录资源,需要在.storybook/main.ts中添加staticDirs配置,让Storybook加载你的静态资源:

import type { StorybookConfig } from "@storybook/nextjs";
import * as path from "path";

const config: StorybookConfig = {
  stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-onboarding",
    "@storybook/addon-interactions",
  ],
  // 添加静态资源目录配置
  staticDirs: ["../public"],
  framework: {
    name: "@storybook/nextjs",
    options: {
      nextConfigPath: path.resolve(__dirname, "../next.config.js"),
      builder: {
        useSWC: true,
      },
      // 升级后可正确添加image配置
      image: {
        loading: "eager",
      },
    },
  },
  docs: {
    autodocs: "tag",
  },
};
export default config;

3. 备选方案:Mock next/image组件(升级后仍有问题时使用)

如果升级插件后问题仍存在,可以在Storybook中mocknext/image,替换为适配的原生组件:
创建.storybook/preview.tsx文件,添加以下内容:

import type { Preview } from "@storybook/react";
import * as NextImage from "next/image";

// Mock next/image组件
const OriginalNextImage = NextImage.default;

Object.defineProperty(NextImage, "default", {
  configurable: true,
  value: (props: any) => <OriginalNextImage {...props} unoptimized />,
});

const preview: Preview = {
  parameters: {
    actions: { argTypesRegex: "^on[A-Z].*" },
    controls: {
      matchers: {
        color: /(background|color)$/i,
        date: /Date$/,
      },
    },
  },
};

export default preview;

添加unoptimized属性可让next/image以原生img的方式加载,避免Storybook的优化逻辑冲突。

验证

修改配置后重启Storybook服务,/app-New.svg图片即可正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:05:24