dannyhw / react-native-storybook-starter

starter project for react native cli setups, typescript included
42 stars 19 forks source link

Unable to resolve module @storybook/core/manager-api #9

Open trooperandz opened 3 days ago

trooperandz commented 3 days ago

When running the starter project (tested for both android and iOS, and after running all install commands), I receive this error:

Unable to resolve module @storybook/core/manager-api from /node_modules/@storybook/addon-ondevice-controls/dist/index.js: @storybook/core/manager-api could not be found within the project...

It seems this is out-of-the-box, and the starter project will not run. Am I missing something obvious?

dannyhw commented 3 days ago

let me check, I have recently pushed some fixes that I need to update the examples to reflect

Sorry for the delay, I'm maintaining a lot of example projects so it takes a while 😅

dannyhw commented 3 days ago

that error is from not having package exports enabled in metro, though it should run if you use yarn storybook:ios or just edit withStorybook in metro to enabled:true

dannyhw commented 2 days ago

OK nvm I broke it in my recent release but I have a fix coming in the next 10 mins

dannyhw commented 2 days ago

@trooperandz should be fixed in 8.3.9 and by keeping the withStorybook config enabled. Theres probably still some tweaking to do here on my part, metro is just really tricky 😅

dannyhw commented 2 days ago

some code I've added to this example to make everything work as expected and remove storybook from non storybook builds.

( see the metro config file )

const config = {
  resolver: {
    resolveRequest: (context, moduleName, platform) => {
      if (
        (moduleName.startsWith('storybook') ||
          moduleName.startsWith('@storybook')) &&
        process.env.STORYBOOK_ENABLED !== 'true'
      ) {
        return {
          type: 'empty',
        };
      }

      return context.resolveRequest(context, moduleName, platform);
    },
  },
};
dannyhw commented 2 days ago

Experimenting with adding this to withStorybook as an option. https://github.com/storybookjs/react-native/pull/622/files

probably will ship it as it seems harmless as an option

trooperandz commented 1 day ago

@dannyhw thanks for looking at this.

I pulled down the project again (fresh start) after the updates, and had a few issues:

1) Had to set my own STORYBOOK_ENABLED env var to get the app to run (maybe the example project should just have an a .env file with this value in it since it has to be changed to work out of the box and is a little bit of a surprise that it doesn't run)?

2) After resolving the above, then I ran into the transformer.unstable_allowRequireContext metro configuration error (I realize there is a note having to set this this to true in the main docs, but maybe the starter project should have this in it since it should run out of the box and I couldn't get metro to run without changing it, which was a surprise).

3) Finally, I got this error after the two above were resolved: TypeError: 0, _$$_REQUIRE(_dependencyMap[8](...)"@storybook/react-native").start is not a function (it is undefined), thrown from the storybook.requires.ts file.

Let me know if I missed some steps or anything; I just pulled it down, installed the dependencies, and ran a pod install for iOS before building it in Xcode. Thanks!

dannyhw commented 1 day ago

The storybook enabled var is set in the script you run from package.json, are you saying the storybook script wasn't working for that?

If you are going to run from xcode yeah it won't work since the env is not set. Though it will work if you use yarn storybook to start metro with storybook enabled first

trooperandz commented 1 day ago

Thanks @dannyhw . Yes, running with the package.json command fixes this. However, there are still the other two issues I encountered mentioned above, resulting in the following errors:

Screenshot 2024-10-17 at 11 30 18 AM Screenshot 2024-10-17 at 11 28 24 AM
dannyhw commented 1 day ago

I've not run into this issue myself when i run the project but i will take a look soon and see if i can reproduce.

You'll only get that if the env variable is turned off an you try to run storybook

trooperandz commented 1 day ago

Thanks. I guess I ran that incorrectly; it's working now, thanks!

dannyhw commented 22 hours ago

@trooperandz glad its working! Thanks for your patience on this, I know its not been easy to get setup. Hopefully I can make it easier. If you have any suggestions for improving documentation or anything else that could be make it easier to get setup i'd be happy to hear it 🙏