Модуль не найден для React Ntaive Webrt c при создании Android сборки - PullRequest
2 голосов
/ 16 июня 2020

Я добавил модуль Webrt c https://www.npmjs.com/package/react-native-webrtc в свое приложение response-native-web.

Я использовал команду npm i -s react-native-webrtc. Но при создании сборки я получаю сообщение об ошибке:

Ошибка: Ошибка: невозможно разрешить модуль react-native-webrtc из App.js: response-native-webrt c не может быть найден в пределах project или в этих каталогах: node_modules

Если вы уверены, что модуль существует, попробуйте следующие шаги: 1. Очистите watchman watch: watchman watch-del-all 2. Удалите node_modules: rm -rf node_modules и запустите yarn install 3. Сброс кеша Metro: yarn start --reset-cache 4. Удалите кеш: rm -rf / tmp / metro- * в ModuleResolver.resolveDependency (D: \ smartek_project \ video_conferencing \ newchanges \ VC_Frontend \ node_modules \ metro \ src \ node-haste \ DependencyGraph \ ModuleResolution. js: 186: 15) в ResolutionRequest.resolveDependency (D: \ smartek_project \ video_conferencing \ newchanges \ VC_Frontend \ node_modules \ metro \ src \ node-haste \ DependencyGraph js ResolutionRequest: 52:18) в DependencyGraph.resolveDependency (D: \ smartek_project \ video_conferencing \ newchanges \ VC_Frontend \ node_modules \ metro \ src \ node-haste \ De pendencyGraph. js: 287: 16) в Object.resolve (D: \ smartek_project \ video_conferencing \ newchanges \ VC_Frontend \ node_modules \ metro \ src \ lib \ transformHelpers. js: 267: 42) в dependencies.map.result (D: \ smartek_project \ video_conferencing \ newchanges \ VC_Frontend \ node_modules \ metro \ src \ DeltaBundler \ traverseDependencies. js: 434: 31) в Array.map () в файле resolveDependencies (D: \ smartek_projectC \ new_conferencing \ new_conferencing) node_modules \ metro \ src \ DeltaBundler \ traverseDependencies. js: 431: 18) в D: \ smartek_project \ video_conferencing \ newchanges \ VC_Frontend \ node_modules \ metro \ src \ DeltaBundler \ traverseDependencies. js at: 275 * at: 275 * в: генераторы. next () в asyncGeneratorStep (D: \ smartek_project \ video_conferencing \ newchanges \ VC_Frontend \ node_modules \ metro \ src \ DeltaBundler \ traverseDependencies. js: 87: 24)

Вот мой пакет. json dependenci

"dependencies": {
    "@babel/polyfill": "^7.10.1",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-native-community/voice": "^1.1.4",
    "@react-navigation/bottom-tabs": "^5.5.1",
    "@react-navigation/native": "^5.5.0",
    "@react-navigation/stack": "^5.4.1",
    "babel-plugin-react-native-web": "^0.12.2",
    "core-js": "^3.6.5",
    "react": "16.11.0",
    "react-dom": "^16.13.1",
    "react-native": "^0.62.2",
    "react-native-gesture-handler": "^1.6.1",
    "react-native-reanimated": "^1.9.0",
    "react-native-safe-area-context": "^3.0.2",
    "react-native-screens": "^2.8.0",
    "react-native-web": "^0.12.2",
    "react-native-webrtc": "^1.75.3"
  },

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Я много дней боролся с этой проблемой. Просто следуйте инструкциям, которые я придумал. (Я использую react-native-cli)

Step 1:

$ rm -rf node_modules/
$ npm i
$ npm i react-native-webrtc --save

Step 2: Замените distributionUrl этим URL https\://services.gradle.org/distributions/gradle-5.5.1-all.zip

Step 3: Замените classpath этим classpath("com.android.tools.build:gradle:3.4.1") из android/build.gradle этого файла.

Step 4:

$ cd android
$ ./gradlew clean
$ cd ..
$ react-native run-android

Надеюсь, это сработает.

1 голос
/ 22 июня 2020

Было две проблемы, из-за которых я получал ошибку.

  1. У metro.config.js была строка ниже

    
     resolver: {
                blacklistRE: /react-native-web/,
                sourceExts: ["js", "json", "ts", "tsx", "android.js", "ios.js"]
              } 
    
    

из-за на « blacklistRE » модуль webrt c не был включен при запуске приложения на android. Вот почему я получал модуль не найден, ошибка . Я решил это, изменив следующие строки кода

     resolver: {
    blacklistRE: /\react-native-web\b/,
    sourceExts: ["js", "json", "ts", "tsx", "android.js", "ios.js"]
  }

После решения эта сборка создавалась, но приложение не запускалось, для этого я использовал предложенные выше изменения для android от @Shahnawaz Hossan. И я также обновил AndroidManifest.xml в android\app\src\main следующими строками:

 <uses-permission android:name="android.permission.CAMERA" />
  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  
...