Родной модуль RNVectorIcons попытался переопределить RNVectorIcons

После завершения всего процесса установки React Native Vector Icons на GitHub я получил эту ошибку, сообщающую мне следующее:

Native module RNVectorIcons tries to override RNVectorIcons.  Check the getPackages() method in MainApplication.java, it might be that module is being created twice. If this was your intention, set canOverrideExsistingModule=true. 

Эта ошибка также может присутствовать, если пакет присутствует только один раз в getPackages(), но также автоматически добавляется позже во время сборки путем автосвязывания. Попробуйте удалить существующую запись и перестроить.

Мой Application.kt выглядит так:

package com.project

import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.soloader.SoLoader
import com.oblador.vectoricons.VectorIconsPackage;

class MainApplication : Application(), ReactApplication {

  override val reactNativeHost: ReactNativeHost =
      object : DefaultReactNativeHost(this) {
        override fun getPackages(): List<ReactPackage> =
            PackageList(this).packages.apply {
              add(VectorIconsPackage())
              // Packages that cannot be autolinked yet can be added manually here, for example:
              // add(MyReactNativePackage())
            }

        override fun getJSMainModuleName(): String = "index"

        override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG

        override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
        override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
      }

  override val reactHost: ReactHost
    get() = getDefaultReactHost(applicationContext, reactNativeHost)

  override fun onCreate() {
    super.onCreate()
    SoLoader.init(this, false)
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
      // If you opted-in for the New Architecture, we load the native entry point for this app.
      load()
    }
  }
}

Если я попытаюсь удалить add(VectorIconsPackage()), я получу две ошибки. Первая ошибка выглядит так:

 ERROR  Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'VectorIcons' could not be found. Verify that a module by this name is registered in the native binary.Bridgeless mode: false. TurboModule interop: false. Modules loaded: {"NativeModules":["PlatformConstants","LogBox","Timing","AppState","SourceCode","BlobModule","WebSocketModule","DevSettings","DevToolsSettingsManager","Networking","Appearance","DevLoadingView","HeadlessJsTaskSupport","UIManager","DeviceInfo","ImageLoader","SoundManager","IntentAndroid","DeviceEventManager"],"TurboModules":[],"NotFound":["NativePerformanceCxx","NativePerformanceObserverCxx","RedBox","BugReporting","LinkingManager","VectorIcons"]}, js engine: hermes
 LOG  Running "Project" with {"rootTag":11}

Вторая ошибка выглядит так:


Invariant Violation: "Project" 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: Project

Зависимости:


"dependencies": {
    "@react-native-vector-icons/ionicons": "^7.4.0-alpha.16",
    "@types/react-native-vector-icons": "^6.4.18",
    "react": "18.2.0",
    "react-native": "0.74.3",
    "react-native-vector-icons": "^10.1.0"
  }

Я попытался отредактировать fonts.gradle согласно Это предложение автора на Github, но ошибка не исчезла.

Обновление или переустановка векторных значков React Native, похоже, вообще не помогает.

0
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

(Решено), просматривая зависимости, я случайно установил две зависимости, все из которых используют VectorIconsPackage вместо одной. Пришлось удалить и то и другое @react-native-vector-icons/Ionicons.

Другие вопросы по теме