Ошибка: связывание не удалось: нарушение инварианта: неверное разрешение актива
Я получаю это при попытке загрузить приложение с устройства Android (1+ 5t)
error: bundling failed: Invariant Violation: invalid asset resolution
at invariant (~/project/node_modules/metro/node_modules/fbjs/lib/invariant.js:40:15)
at ModuleResolver._getFileResolvedModule (~/project/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:175:9)
at ModuleResolver.resolveDependency (~/project/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:116:19)
at ResolutionRequest.resolveDependency (~/project/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:49:18)
at DependencyGraph.resolveDependency (~/project/node_modules/metro/src/node-haste/DependencyGraph.js:218:16)
at Object.resolve (~/project/node_modules/metro/src/lib/transformHelpers.js:141:30)
at dependencies.map.result (~/project/node_modules/metro/src/DeltaBundler/traverseDependencies.js:373:31)
at Array.map (<anonymous>)
at resolveDependencies (~/project/node_modules/metro/src/DeltaBundler/traverseDependencies.js:369:18)
at ~/project/node_modules/metro/src/DeltaBundler/traverseDependencies.js:188:33
BUNDLE [android, dev] ./index.js ░░░░░░░░░░░░░░░░ 0.0% (0/1), failed.
Пытался:
- react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
- react-native start --reset-cache
- rm -rf node_module & yarn install
Любая помощь будет оценена
2 ответа
Исправить : удалить '.ios.' вне имени изображения, так как мое приложение в настоящее время работает только на ios, у меня были некоторые остатки в именах некоторых изображений, таких как 'welcome@2.ios.png' - так что при работе на android, реагировать на родной не удалось найти какие-либо ресурсы
когда вы используете React Native Platform Api (https://reactnative.dev/docs/platform), если у вас есть 2 файла в папке ресурсов для отображения другого пользовательского интерфейса, один для Android и один для Ios, когда вы вызываете свое изображение, вы должны удалите тип ОС внутри имени вашего файла.
Я имею в виду, buttonIcon.android.png || buttonIcon.ios.png => buttonIcon.png
React Native Platform API сделает переключение.
бывший :
var displayShareButton = () => {if(data != undefined && Platform.OS === "android") { return(<TouchableOpacitystyle={styles.shareButton}onPress={() => shareSomething()}>< Стиль изображения={styles.shareImage} источник={требуется("../assets/buttonIcon.png")}/> ) } }
Надеюсь, это исправит ошибку :)