React Native TurboModule无法注册,启动时报undefined is not an object
我在按照官方文档实现一个TurboModule时遇到了问题。按照步骤创建了MyModule.java并注册到ReactPackage,但运行时却报错了:
TypeError: undefined is not an object (evaluating '_NativeModules.MyModule.multiply')
已经确认模块类名和package名称一致,甚至用Log验证过模块确实被加载了。是不是注册流程哪里漏掉了?或者需要额外配置metro的transform设置?
1. 检查getReactModuleInfoProvider()方法有没有正确实现,这个经常漏掉。比如:
2. 确保在MainApplication.java里注册了你的Package:
3. 最坑爹的一点:TurboModule要求RN版本0.68+,如果版本不对会静默失败。检查下你的package.json。
4. 如果都对了还是不行,试试清空metro缓存:
npx react-native start --reset-cache我上次debug这个搞到凌晨3点,最后发现是ReactModuleInfo里的参数填错了。这个错误提示确实不太友好,RN团队应该改进下...
index.js或调用处加上这行:然后确认原生侧的 @TurboModule() 注解类名和 get 方法里传的字符串完全一致,大小写都不能错。