Expo集成Storybook启动触发栈溢出错误求助
React Native Expo集成Storybook触发栈溢出错误排查方案
检查版本兼容性:
不要盲目调整react-native或Expo版本,先确认Storybook版本与当前Expo SDK版本的适配性。比如Expo SDK 49需搭配Storybook 7.x系列,SDK 50则需要Storybook 7.3及以上版本,核对官方版本适配矩阵即可。排查App.tsx的分支逻辑:
确保Storybook的启动分支与主App逻辑完全隔离,避免循环导入或递归调用。比如若存在组件导入了App.tsx中的Storybook相关代码,就会触发栈溢出。推荐用环境变量做分支判断:import { StorybookUIRoot } from './.storybook'; import MainApp from './src/MainApp'; export default function App() { if (process.env.STORYBOOK_ENABLED === 'true') { return <StorybookUIRoot />; } return <MainApp />; }同时检查是否存在组件与App.tsx之间的循环引用。
清理依赖与缓存:
执行以下命令清除可能存在的缓存或依赖冲突:npx expo start --clear rm -rf node_modules && npm install rm -rf .expo检查Storybook配置文件:
查看.storybook/main.ts和.storybook/preview.ts,确认是否存在插件重复注册、装饰器无限递归调用的情况。比如某个装饰器内部反复调用自身,就会触发栈溢出。排查组件递归问题:
检查已添加到Storybook的所有组件,确认是否存在组件自身调用自身且无终止条件的情况,这类组件在Storybook渲染时会直接触发栈溢出。
内容的提问来源于stack exchange,提问作者Janaki Rajesh Duvvuri
相关产品推荐
相关产品推荐

