Skip to content

[0.76] Error: Cannot find module '@react-native-community/cli-server-api' #47309

@tido64

Description

@tido64

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-plugin requires @react-native-community/cli-server-api to register commands like bundle and start
  • However, the former declares it as a peer dependency and also making it optional:
    "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 is react-native. But react-native does 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-api means that bundle and start never 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

  1. Clone/check out this branch: chore: bump react-native to 0.76 microsoft/rnx-kit#3409
  2. Remove workarounds in .yarnrc.yml (the react-native section under resolutions)
  3. Run yarn
  4. Apply the following fixes directly under packages/test-app/node_modules/:
  5. Run react-native config inside packages/test-app
  6. Verify that bundle and start are 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

microsoft/rnx-kit#3409

Screenshots and Videos

No response

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions