react-native-worklets v0.5.1中使用scheduleOnRN替代runOnJS导致Android应用崩溃问题求助
react-native-worklets v0.5.1中使用scheduleOnRN替代runOnJS导致Android应用崩溃问题求助
各位好,我最近在开发React Native项目时遇到了一个棘手的问题,想请教下社区的大佬们。
问题背景
我在使用react-native-worklets@0.5.1时,ESLint一直提示runOnJS已经被弃用,虽然原来的代码运行完全正常,但不想一直靠禁用ESLint单条规则来忽略警告。于是我查看了node_modules里的函数注释,发现官方明确标注runOnJS已废弃,推荐用scheduleOnRN作为替代方案。
但替换之后,奇怪的问题出现了:Web端运行完全没问题,但在Android模拟器的Expo Go里,只要一调用scheduleOnRN,应用就直接崩溃——哪怕我传一个空的回调函数进去,结果还是一样崩溃。
崩溃日志
从adb logcat里拿到的崩溃信息如下:
09-26 07:31:52.589 25933 25933 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x394d28b2cca5d879 in tid 25933 (st.exp.exponent), pid 25933 (st.exp.exponent)
项目相关依赖版本
react-native: 0.81.4expo: ~54.0.10react-native-worklets: 0.5.1react-native-reanimated: ~4.1.0
关键代码片段
原正常运行的runOnJS代码(仅ESLint弃用警告)
// 省略上下文代码,仅保留关键部分 if (isFinished) { runOnJS(() => { setMounted(false); hideToaster(); }); }
替换为scheduleOnRN后的崩溃代码
// 替换后,Web正常,Android一执行就崩溃 if (isFinished) { scheduleOnRN(() => { setMounted(false); hideToaster(); }); }
我甚至试过最简化的空回调调用,依然触发崩溃:
scheduleOnRN(() => {}); // Android模拟器执行到该行直接崩溃
已尝试的排查操作
- 确认
runOnJS本身功能正常,仅存在弃用警告 - 尝试传递空回调给
scheduleOnRN,问题依旧 - 清理Expo缓存、重新安装依赖,崩溃现象未消失
有没有大佬遇到过类似的问题?或者有没有runOnJS的正确替代方案?麻烦指点一下,谢谢!




