-
Notifications
You must be signed in to change notification settings - Fork 25.1k
Description
Description
react-native bundle and react-native start are currently not correctly registered. After some investigation, this is what's happening:
@react-native/community-cli-pluginrequires@react-native-community/cli-server-apito register commands likebundleandstart- However, the former declares it as a peer dependency and also making it optional:
react-native/packages/community-cli-plugin/package.json
Lines 36 to 41 in 3c02738
"devDependencies": { "metro-resolver": "^0.81.0" }, "peerDependencies": { "@react-native-community/cli-server-api": "*" }, - The responsibility to fulfill the requirement falls on whoever consumes
@react-native/community-cli-plugin, which in this case isreact-native. Butreact-nativedoes not declare dependency on@react-native-community/cli-server-api. And since it's marked as optional, package managers don't complain. - Failing to load
@react-native-community/cli-server-apimeans thatbundleandstartnever gets registered and won't show up in config.
One way to fix this is to make @react-native-community/cli-server-api required again, and forward that dependency in react-native. This should make the consumer the responsible for satisfying the dependency. This also means that the template needs to be updated to include this dependency. I'm sure there are other alternatives that I have overlooked.
An alternative to that would be to make @react-native/community-cli-plugin or react-native directly depend on @react-native/community-cli-plugin.
A third option would be to move the package to the RN repo and make it part of @react-native/community-cli-plugin
Steps to reproduce
- Clone/check out this branch: chore: bump
react-nativeto 0.76 microsoft/rnx-kit#3409 - Remove workarounds in
.yarnrc.yml(thereact-nativesection underresolutions) - Run
yarn - Apply the following fixes directly under
packages/test-app/node_modules/: - Run
react-native configinsidepackages/test-app - Verify that
bundleandstartare missing
React Native Version
0.76.1
Affected Platforms
Build - MacOS, Build - Windows, Build - Linux
Output of npx react-native info
System:
OS: macOS 14.7
CPU: (10) arm64 Apple M1 Max
Memory: 1.54 GB / 64.00 GB
Shell:
version: 3.7.1
path: /opt/homebrew/bin/fish
Binaries:
Node:
version: 20.18.0
path: /private/var/folders/j0/5zfnwvyd4sb15smylklx03m00000gn/T/xfs-27033e9b/node
Yarn:
version: 4.4.0
path: /private/var/folders/j0/5zfnwvyd4sb15smylklx03m00000gn/T/xfs-27033e9b/yarn
npm:
version: 10.8.2
path: ~/.local/bin/npm
Watchman:
version: 2024.09.30.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.14.3
path: /Users/tido/.gem/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.4
- iOS 17.4
- macOS 14.4
- tvOS 17.4
- visionOS 1.1
- watchOS 10.4
Android SDK:
API Levels:
- "34"
Build Tools:
- 30.0.3
- 33.0.0
- 33.0.1
- 34.0.0
System Images:
- android-34 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2024.1 AI-241.18034.62.2411.12071903
Xcode:
version: 15.3/15E204a
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.12
path: /usr/bin/javac
Ruby:
version: 3.3.5
path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 15.0.0
wanted: ^15.0.0
react:
installed: 18.3.1
wanted: 18.3.1
react-native:
installed: 0.76.1
wanted: ^0.76.0
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: Not found
newArchEnabled: Not found
iOS:
hermesEnabled: Not found
newArchEnabled: false
Stacktrace or Logs
Error: Cannot find module '@react-native-community/cli-server-api'
Require stack:
- /~/node_modules/.store/@react-native-community-cli-plugin-virtual-29d9c8df52/package/dist/commands/start/runServer.js
- /~/node_modules/.store/@react-native-community-cli-plugin-virtual-29d9c8df52/package/dist/commands/start/index.js
- /~/node_modules/.store/@react-native-community-cli-plugin-virtual-29d9c8df52/package/dist/index.js
- /~/node_modules/.store/react-native-virtual-5d869b466d/package/react-native.config.js
- /~/node_modules/.store/cosmiconfig-virtual-f7d5522c5c/package/dist/loaders.js
- /~/node_modules/.store/cosmiconfig-virtual-f7d5522c5c/package/dist/defaults.js
- /~/node_modules/.store/cosmiconfig-virtual-f7d5522c5c/package/dist/index.js
- /~/node_modules/.store/@react-native-community-cli-config-npm-15.0.0-1758a65588/package/build/readConfigFromDisk.js
- /~/node_modules/.store/@react-native-community-cli-config-npm-15.0.0-1758a65588/package/build/loadConfig.js
- /~/node_modules/.store/@react-native-community-cli-config-npm-15.0.0-1758a65588/package/build/index.js
- /~/node_modules/.store/@react-native-community-cli-npm-15.0.0-2240e43604/package/build/commands/index.js
- /~/node_modules/.store/@react-native-community-cli-npm-15.0.0-2240e43604/package/build/index.js
- /~/node_modules/.store/react-native-virtual-5d869b466d/package/cli.js
Reproducer
Screenshots and Videos
No response