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

使用原生Svelte .svelte文件在Storybook中无法展示Story求助

问题:Storybook + Svelte 无法渲染Grid组件Story

需求

  • 基于本地项目中的Grid、Row、Column组件,在Storybook中编写对应的Story
  • 偏好使用Markdown格式的.stories文件,也接受.js/.svelte格式方案

当前编写的Grid.stories.svelte代码

<script>
  // @ts-ignore
  import { Meta, Template, Story } from "@storybook/addon-svelte-csf";
  import Grid from "../Grid/Grid.svelte";
  import Row from "../Grid/Row.svelte";
  import Column from "../Grid/Column.svelte";
</script>

<Meta title="Grid" component={Grid} />

<Template let:args id="Default">
  <svelte:fragment slot="gridlayout">
    <Grid {...args}>
      <Row {...args}>
        <Column height="1" width="4">
          <header>
            <h2>Description</h2>
          </header>
          <hr />
          <p>
            <span class="bold">Svelte Grid Layout</span> is a tool that make it easier
            to create a page template for applications built with Svelte
          </p>
        </Column>
      </Row>
    </Grid>
  </svelte:fragment>
</Template>

<Story name="Default" template="Default" />

遇到的错误

Cannot process .svelte file with storyStoreV7: src/lib/storybook/Grid.stories.svelte

  • Grid组件的Story无法正常展示

已尝试的无效方案

  • 按照官方问题提示,在Storybook配置中禁用storyStoreV7并添加@storybook/addon-svelte-csf插件,操作后无效且影响其他插件正常工作
  • 尝试Storybook Svelte文档中多组件Story的多种写法,均出现各类报错

配置信息

  • Storybook: 6.5.9
  • Svelte: 3.49.0

可行解决方案

方案1:改用.js格式编写Story(兼容storyStoreV7)

6.5.x版本的storyStoreV7对.svelte格式Story支持存在兼容性问题,改用.js格式更稳定,代码示例:

import Grid from '../Grid/Grid.svelte';
import Row from '../Grid/Row.svelte';
import Column from '../Grid/Column.svelte';

export default {
  title: 'Grid',
  component: Grid,
  subcomponents: { Row, Column },
};

const Template = ({ ...args }) => ({
  Component: Grid,
  props: args,
  slots: {
    default: () => ({
      Component: Row,
      slots: {
        default: () => ({
          Component: Column,
          props: { height: '1', width: '4' },
          slots: {
            default: () => `
              <header>
                <h2>Description</h2>
              </header>
              <hr />
              <p>
                <span class="bold">Svelte Grid Layout</span> is a tool that makes it easier
                to create a page template for applications built with Svelte
              </p>
            `,
          },
        }),
      },
    }),
  },
});

export const Default = Template.bind({});
Default.args = {};

方案2:调整Storybook配置,正确适配.svelte格式Story

如果坚持使用.svelte格式的Story,需确保配置正确:

  1. 修改.storybook/main.js配置:
module.exports = {
  stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx|svelte)'],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    '@storybook/addon-svelte-csf'
  ],
  features: {
    storyStoreV7: false,
  },
};
  1. 安装与Storybook版本匹配的插件:
npm install @storybook/addon-svelte-csf@6.5.9 --save-dev
  1. 清除缓存并重启Storybook:
npx storybook dev --no-manager-cache

方案3:升级Storybook到稳定版本

6.5.9属于较旧版本,storyStoreV7的兼容性问题在后续版本中已修复。可以升级到7.x版本(Svelte 3.x兼容Storybook 7.x),升级后无需额外配置即可正常使用.svelte格式的Story。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:36:13