Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Storybook doesn't recover after fixing syntax error in stories file #24155

Open
emlai opened this issue Sep 12, 2023 · 15 comments
Open

[Bug]: Storybook doesn't recover after fixing syntax error in stories file #24155

emlai opened this issue Sep 12, 2023 · 15 comments

Comments

@emlai
Copy link

emlai commented Sep 12, 2023

Describe the bug

When making a syntax error in a .stories.tsx file, storybook crashes with the following error:

WARN 🚨 Unable to index files:
WARN - ./../project-name/src/Switch/Switch.mdx: Invariant failed: Could not find or load CSF file at path "./Switch.stories" referenced by `of={}` in docs file "../project-name/src/Switch/Switch.mdx".
WARN     
WARN - Does that file exist?
WARN - If so, is it a CSF file (`.stories.*`)?
WARN - If so, is it matched by the `stories` glob in `main.js`?
WARN - If so, has the file successfully loaded in Storybook and are its stories visible?
WARN - ./../project-name/src/Switch/Switch.stories.tsx: Unexpected token, expected "," (33:9)
37% building 1/2 entries 258/267 dependencies 458/127 modulesUnexpected token, expected "," (33:9)
No errors found.

After fixing the syntax error, storybook is unable to recover and shows a new error:

WARN 🚨 Unable to index ./../project-name/src/Switch/Switch.mdx:
WARN   Error: Invariant failed: Could not find or load CSF file at path "./Switch.stories" referenced by `of={}` in docs file "../project-name/src/Switch/Switch.mdx".
WARN     
WARN - Does that file exist?
WARN - If so, is it a CSF file (`.stories.*`)?
WARN - If so, is it matched by the `stories` glob in `main.js`?
WARN - If so, has the file successfully loaded in Storybook and are its stories visible?
WARN     at invariant (/Users/emlai/src/repo-name/node_modules/.pnpm/tiny-invariant@1.3.1/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js:14:11)
WARN     at StoryIndexGenerator.extractDocs (/Users/emlai/src/repo-name/node_modules/.pnpm/@storybook+core-server@7.4.0/node_modules/@storybook/core-server/dist/index.js:54:7829)
WARN     at async /Users/emlai/src/repo-name/node_modules/.pnpm/@storybook+core-server@7.4.0/node_modules/@storybook/core-server/dist/index.js:54:2052
WARN     at async Promise.all (index 15)
WARN     at async Promise.all (index 1)
WARN     at async StoryIndexGenerator.updateExtracted (/Users/emlai/src/repo-name/node_modules/.pnpm/@storybook+core-server@7.4.0/node_modules/@storybook/core-server/dist/index.js:54:1684)
WARN     at async StoryIndexGenerator.ensureExtracted (/Users/emlai/src/repo-name/node_modules/.pnpm/@storybook+core-server@7.4.0/node_modules/@storybook/core-server/dist/index.js:54:2641)
WARN     at async StoryIndexGenerator.getIndex (/Users/emlai/src/repo-name/node_modules/.pnpm/@storybook+core-server@7.4.0/node_modules/@storybook/core-server/dist/index.js:59:3620)
WARN     at async /Users/emlai/src/repo-name/node_modules/.pnpm/@storybook+core-server@7.4.0/node_modules/@storybook/core-server/dist/index.js:51:5264
No errors found.

The only solution is to restart storybook.

Some issues I observe:

  • It's showing WARN and No errors found., but seems like this should be an error, not a warning?
  • When making the syntax error, Invariant failed shouldn't happen. Storybook should only report the syntax error e.g. Unexpected token, expected ","
  • After fixing the syntax, Invariant failed shouldn't also happen. Storybook should recover and render without errors.

To Reproduce

Create a storybook with an mdx file that imports a .stories.ts file, and make a syntax error in the stories file.

System

System:
    OS: macOS 13.5
    CPU: (12) arm64 Apple M2 Pro
  Binaries:
    Node: 20.5.1 - /opt/homebrew/bin/node
    npm: 9.8.0 - /opt/homebrew/bin/npm
  Browsers:
    Chrome: 116.0.5845.179
    Safari: 16.6

Additional context

No response

@hrigner
Copy link

hrigner commented Sep 12, 2023

I have the same experience!

@shilman
Copy link
Member

shilman commented Sep 13, 2023

I just tried reproducing on a fresh Vite project and did not encounter this issue. Do you a have a reproduction repo you can share? If not, can you create one? Go to https://storybook.new or see repro docs. Thank you! 🙏

@shilman
Copy link
Member

shilman commented Sep 13, 2023

I take that back. I am able to reproduce the problem intermittently. When I create a syntax error I get the error screen, and when I fix the syntax error the story renders correctly. However, the sidebar stories sometimes disappear. When I edit the .mdx file that references the story, the sidebar stories come back. However, it looks like there are definitely some broken (hopefully edge cases) here.

@shilman shilman moved this to Empathy Backlog in Core Team Projects Sep 13, 2023
@emlai
Copy link
Author

emlai commented Sep 13, 2023

Glad you were able to reproduce it. We're using the webpack builder, if it makes a difference in reproducability.

@esquevin
Copy link

I encounter a similar issue when when switching between branches.

Being on a feature branch I start storybook, everything works.
Then I checkout another feature branch and storybook complains that it is unable to index files specific to the former branch.

And then I've to restart it which takes ~1 min on my codebase.

Would it be possible for the watcher to handle removed files too? as well as errors

@esquevin
Copy link

esquevin commented Oct 6, 2023

@shilman Might be a dumb suggestion, but could a band aid be to show a button on the error screen when storybook can't index a file, to trigger a new scan of all the files?

Of course it's not a proper fix, but given that meanwhile we've to manually restart storybook… it could still be a huge win.

@emlai
Copy link
Author

emlai commented Oct 25, 2023

Update: if I make any change in the story's .mdx file after the crash, then storybook recovers.

@jardakotesovec
Copy link

@shilman I think I am having same problem here. It breaks down as I am working on my stories and by updating stories it does not restore. I have to do some random change in mdx file for it to recover. I am currently migrating big ui library to storybook and it happens every couple of minutes and its making the process quite painful.

Latest storybook 7.5.3, with vite and vue3.

I can try to create minimal reproducible setup, but since you mentioned that you can reproduce it I not sure if its worth the time.

Screenshot 2023-11-28 at 14 18 18

@crispika
Copy link

crispika commented Jan 23, 2024

@shilman I have the same issue. When I edit my stories, if any syntax error occurs and then fixed, then the storybook always turns as

Error: Invariant failed: Could not find or load CSF file at path "./Tree.stories" referenced by of={} in docs file "src/Tree/Tree.mdx".

If I edit anything in my tree.mdx, then it recovers. Otherwise, I will have to restart the storybook. My repo uses rollup.js to compile my component library. Recently, I upgraded Storybook 6.5 to the latest Storybook 7 for more advanced MDX feature support.

I am wondering if any legacy mdx setting of my repo might cause this issue. Here's my pacakage.json

in 6.5 I am still using addon-docs which is included in 6.5. Everything seems work so I haven't change to as documentation recommended package '@storybook/blocks'

"@storybook/addon-docs": "^7.6.8",  
"@storybook/addon-essentials": "^7.6.8",
"@storybook/addon-mdx-gfm": "^7.6.8",
"@storybook/addon-themes": "^7.6.8",
"@storybook/react": "^7.6.8",
"@storybook/react-webpack5": "^7.6.8",
"storybook": "^7.6.8",

Also, I manually set the mdx version when I am using Storybook 6.5 by following resolution in #18094; I am wondering if upgrading the package will get me rid of the errors.

"@mdx-js/react": "^1.6.22",
"overrides": {
		"@mdx-js/react": {
			"react": "$react"
		}
	}

Really appreciate for your help!

@emlai
Copy link
Author

emlai commented Feb 6, 2024

Now this has seemingly started happening even when I'm not making a syntax error, just "normally" editing the code. So I sometimes have to edit-save-edit-save the .mdx file after each story change...

It could be caused by editor auto-save happening in the middle of editing, but not sure.

@matthewdolman-afd
Copy link

Also having the same problem

@dmy-leanix
Copy link

Same problem, Angular 17 with storybook 7, but not related to mdx file change

@elrouss
Copy link

elrouss commented Jan 27, 2025

The same problem, when editing .mdx file (v. 7.0.2)

@shilman
Copy link
Member

shilman commented Jan 28, 2025

If you try upgrading to the latest release does that fix it?

npx storybook@latest upgrade

@kerryj89
Copy link

kerryj89 commented Feb 6, 2025

If you try upgrading to the latest release does that fix it?

npx storybook@latest upgrade

Still an issue for me after upgrade. Like emlai mentioned above, re-saving the corresponding .mdx fixes it but I don't think anyone would know to do that instinctively.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Empathy Backlog
Development

No branches or pull requests

10 participants