callstack / callstack/react-native-builder-bob
Error when trying to register headless task in library
- 主要语言
- JavaScript
- 星标
- 3.2k
- 派生
- 228
- 平均合并
- 7 天 12 小时
- 30 天内合并 PR
- 3
描述
### Description
Hi!
I'm trying to create a wrapper around the `AppRegistry.registerHeadlessTask` function in my library like this:
```
export function setBackgroundMessageHandler(handler: BackgroundMessageHandler) {
AppRegistry.registerHeadlessTask('MediaControlsHeadlessTask', () => handler);
}
```
And this is in the example/index,js:
```
setBackgroundMessageHandler(require('./src/handler'));
```
This results in the following errors:
```
E Invariant Violation: "MediaControlsExample" has not been registered. This can happen if:
* Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it, and restart it in the current project.
* A module failed to load due to an error, and `AppRegistry.registerComponent` wasn't called., js engine: hermes
E ExceptionsManager should be set up after React DevTools to avoid console.error arguments mutation
E TypeError: property is not writable, js engine: hermes
E TypeError: Cannot read property 'default' of undefined, js engine: hermes
```
Calling `AppRegistry.registerHeadlessTask` in the example/index.js directly works. It seems like AppRegistry points to two react-native instances?! E.g. when printing `AppRegistry.getAppKeys()`, I get different results in the example/index.js and the library.
### Packages
- [x] create-react-native-library
- [ ] react-native-builder-bob
### Selected options
"create-react-native-library": {
"languages": "kotlin-objc",
"type": "turbo-module",
"version": "0.52.0"
}
### Link to repro
https://github.com/mbpictures/react-native-media-notification/tree/feat/android-auto-library
### Environment
info Fetching system and libraries information...
System:
OS: Windows 11 10.0.26100
CPU: (24) x64 13th Gen Intel(R) Core(TM) i7-13700K
Memory: 3.77 GB / 31.77 GB
Binaries:
Node:
version: 22.16.0
path: C:\Program Files\nodejs\node.EXE
Yarn:
version: 3.6.1
path: ~\AppData\Roaming\npm\yarn.CMD
npm:
version: 8.12.2
path: C:\Program Files\nodejs\npm.CMD
Watchman: Not Found
SDKs:
Android SDK: Not Found
Windows SDK:
AllowAllTrustedApps: Enabled
AllowDevelopmentWithoutDevLicense: Enabled
Versions:
- 10.0.19041.0
- 10.0.22000.0
IDEs:
Android Studio: Not Found
Visual Studio:
- 16.11.35026.282 (Visual Studio Community 2019)
- 17.10.35122.118 (Visual Studio Community 2022)
Languages:
Java: 17.0.9
Ruby:
version: 3.2.3
path: C:\Ruby32-x64\bin\ruby.EXE
npmPackages:
"@react-native-community/cli":
installed: 18.0.0
wanted: 18.0.0
react:
installed: 19.0.0
wanted: 19.0.0
react-native:
installed: 0.79.2
wanted: 0.79.2
react-native-windows: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: Not found
newArchEnabled: Not found
info React Native v0.81.0 is now available (your project is running on v0.79.2).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.81.0
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.79.2&to=0.81.0
info For more info, check out "https://reactnative.dev/docs/upgrading?os=windows".
贡献指南
调研方向
Start by reproducing the issue from the linked repro and compare the AppRegistry results in example/index.js with those from the library wrapper. Inspect how the create-react-native-library turbo-module setup resolves React Native, then verify that headless task registration works through the library without duplicate React Native instances.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript, react-native
- 领域
- mobile-dev, tooling
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100