🔥

既存プロジェクトにStorybookを導入した際に遭遇したエラーまとめ

2023/12/08に公開

アクセストークンが取得できない時のエラー

解決方法:
React Contextをコンポーネント内で使用している場合に、使用しているProviderを参照できずにエラーになっているのでstorybookでも参照できるようにする必要があり、preview.jsにdecoratorを追加すれば解消する。

.storybook/preview.js

 decorators: [
    (Story) => (
      <>
        <PhotopeerContext.Provider value={{currentUser: null, hasAccessToken: () => {return true}}}>
          <UserLikedPostsContext.Provider value={{likedPosts: [], addLikedPosts: () => {}, removeLikedPosts: () => {}, toggleLikeInProgress: false}}>
              <Story />
          </UserLikedPostsContext.Provider>
        </PhotopeerContext.Provider>
      </>
    ),
  ],

解決方法:
storybook側でもNavLinkが機能するようにする必要があり、preview.jsにBrowserRouterを追加すれば解決する。

.storybook/preview.js

 decorators: [
    (Story) => (
      <>
         <BrowserRouter>
           <Story />
         </BrowserRouter>
      </>
    ),
  ],

コンポーネントの定義が適切でない場合のエラー

解決方法:
エラーの記述にもあるようにCSF(https://storybook.js.org/docs/api/csf)のフォーマットに合わせる必要があり、functionの定義の仕方を変えることで解消できる。

src/component

function CardNote(props) {}
↓
const CardNote = ({ props }) => {}

Discussion