【发布时间】:2021-02-23 01:27:48
【问题描述】:
我正在尝试在项目中设置 Storybook。我的项目在 react@^16 上运行,我使用的是 typescript,带有用于开发和构建的自定义 babel 和 webpack 设置。为了设置故事书,我做了
npx sb init
这会安装所有需要的东西。它在根文件夹中放置了一个.storybook 文件夹,在我的src 文件夹中放置了一个stories 文件夹,其中包含tsx 格式的一些预制组件和故事(这是我想要的):
.storybook/main.js 文件看起来不错:
module.exports = {
"stories": [
"../src/**/*.stories.mdx",
"../src/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [
"@storybook/addon-links",
"@storybook/addon-essentials"
]
}
npx sb init 自动安装的平均 .stories.js 文件似乎也很好:
import React from 'react';
// also exported from '@storybook/react' if you can deal with breaking changes in 6.1
import { Story, Meta } from '@storybook/react/types-6-0';
import { Header, HeaderProps } from './Header';
export default {
title: 'Example/Header',
component: Header,
} as Meta;
const Template: Story<HeaderProps> = (args) => <Header {...args} />;
export const LoggedIn = Template.bind({});
LoggedIn.args = {
user: {},
};
export const LoggedOut = Template.bind({});
LoggedOut.args = {};
但是当我运行npm run storybook 时,故事书登陆页面没有故事。即使它已经安装了一些默认故事来开始播放。它说:
Oh no! Your Storybook is empty. Possible reasons why:
The glob specified in main.js isn't correct.
No stories are defined in your story files.
根据要求,here 是一个指向 repo 的链接,因此您可以更深入地了解结构、weback 配置等。注意我尚未提交了 npx sb init 更改,所以你不会在那里看到文件,只有我在运行 sb init 之前的起点。
让npx sb init 使用标准的 create-react-app 没有任何问题,但是使用我的自定义 webpack 构建和打字稿,它只是空的。怎么了?
编辑:附加细节
我意识到只是运行npx sb init,然后npm run storybook 会引发此错误:
ERROR in ./.storybook/preview.js-generated-config-entry.js
Module not found: Error: Can't resolve 'core-js/modules/es.array.filter'
基于this thread,安装core-js@3 解决了问题,并且故事书运行,尽管没有故事。
【问题讨论】:
-
您的故事文件实际上是在导出故事吗?只是因为我过去错误地这样做了才问!
-
他们
.stories.js文件似乎很好......我在问题中添加了一个以进行澄清。这些是npx sb init引入的默认文件,甚至还没有我自己编写的任何故事文件。我实际上只是一个接一个地做了一个npx sb init然后npm run storybook,默认设置是显示一个空的故事书。 -
我认为
npx sb init需要一个 CRA 项目才能工作,尝试使用npm run storybook --debug-webpack调试 webpack 配置以获取有关正在运行的内容的更多详细信息,并将其与 CRA 中使用的进行比较 -
能否请您分享此 repo 的 GitHub 链接,以便以更好的方式进行调试?
-
我添加了链接。请注意,repo 没有从
sb init添加的文件,因为在它开始工作之前我不会提交它们。想象一下克隆 repo 并运行npx sb init,你就会遇到我遇到的问题。
标签: reactjs typescript webpack storybook