ReactNative Metro Bundler无法自动启动

Pra*_*h S 8 android react-native

react-native run-android没有启动捆绑,所以我试着 react-native start显示下面的错误.

????????????????????????????????????????????????????????????????????????????????
?                                                                              ?
?  Running Metro Bundler on port 8081.                                         ?
?                                                                              ?
?  Keep Metro running while developing on any JS projects. Feel free to        ?
?  close this tab and run your own Metro instance if you prefer.               ?
?                                                                              ?
?  https://github.com/facebook/react-native                                    ?
?                                                                              ?
????????????????????????????????????????????????????????????????????????????????

events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::8081
    at Server.setupListenHandle [as _listen2] (net.js:1286:14)
    at listenInCluster (net.js:1334:12)
    at Server.listen (net.js:1421:7)
    at /Users/user/Documents/Prasanth/AwesomeProject/node_modules/metro/src/index.js:157:18
    at new Promise (<anonymous>)
    at Object.<anonymous> (/Users/user/Documents/Prasanth/AwesomeProject/node_modules/metro/src/index.js:156:12)
    at Generator.next (<anonymous>)
    at step (/Users/user/Documents/Prasanth/AwesomeProject/node_modules/metro/src/index.js:47:262)
    at /Users/user/Documents/Prasanth/AwesomeProject/node_modules/metro/src/index.js:47:422
Emitted 'error' event at:
    at Server.WebSocketServer._onServerError (/Users/user/Documents/Prasanth/AwesomeProject/node_modules/ws/lib/WebSocketServer.js:82:50)
    at Server.emit (events.js:187:15)
    at emitErrorNT (net.js:1313:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
Run Code Online (Sandbox Code Playgroud)

反应原生信息

  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM)2 Duo CPU     E7600  @ 3.06GHz
      Memory: 3.36 GB / 12.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.12.0 - /usr/local/bin/node
      Yarn: 1.10.1 - /usr/local/bin/yarn
      npm: 6.4.1 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
      Android SDK:
        Build Tools: 21.1.2, 23.0.1, 25.0.0, 26.0.0, 26.0.1, 26.0.2, 26.0.3, 27.0.3, 28.0.2, 28.0.3
        API Levels: 21, 22, 23, 24, 25, 26, 27
    IDEs:
      Android Studio: 3.2 AI-181.5540.7.32.5056338
      Xcode: 10.0/10A255 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.5.0 => 16.5.0 
      react-native: 0.57.2 => 0.57.2 
    npmGlobalPackages:
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7
Run Code Online (Sandbox Code Playgroud)

的package.json

{
  "name": "AwesomeProject",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "16.5.0",
    "react-native": "0.57.2"
  },
  "devDependencies": {
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "react-test-renderer": "16.5.0"
  },
  "jest": {
    "preset": "react-native"
  }
}
Run Code Online (Sandbox Code Playgroud)

我试过清理缓存和反向adb仍然遇到了这个问题

react-native run-android 显示以下错误.

在此输入图像描述

Android Home配置

export ANDROID_HOME=/<Path>/android-sdk-macosx
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
Run Code Online (Sandbox Code Playgroud)

如何解决此问题.

小智 18

用这个替换代码。文件路径是——

node_modules\metro-config\src\defaults\blacklist.js

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];
Run Code Online (Sandbox Code Playgroud)

我从 Github 找到了这个解决方案。


Sul*_*lly 11

我也面临同样的问题。我刚刚更新到 0.59.1,这不起作用......作为一种解决方法,我在单独的选项卡中运行 Metro Builder,然后在单独的选项卡中运行 react。

react-native start --reset-cache 
Run Code Online (Sandbox Code Playgroud)

在一个终端中并保持打开状态

react-native run-android 
Run Code Online (Sandbox Code Playgroud)

在另一个终端


小智 10

因为端口8081正在使用中..

尝试

react-native start --port=8080
Run Code Online (Sandbox Code Playgroud)

这将有用.


Pra*_*h S 6

我尝试按照以下步骤解决问题

  1. 在其他端口上运行打包程序 react-native start --port 8084 --reset-cache
  2. react-native run-android --port 8084 在第二个命令提示符窗口中运行  。
  3. 出现错误屏幕后,单击  Ctrl + M
  4. 单击底部的开发设置按钮。
  5. 单击调试设备的服务器主机和端口按钮。
  6. 键入  localhost:8084 并单击确定按钮。
  7. 再次运行 react-native run-android --port 8084


dip*_*ri4 5

我遇到过同样的问题。上述解决方案对我不起作用。问题来自NodeJS 版本

NodeJS的安装版本是12.11.1我遇到上述问题的地方。然后我用稳定版本替换10.16.3 LTS它并且它有效。

希望这个解决方案可能会有所帮助。