Исправить ошибку: невозможно разрешить модуль './index.android' из '' - PullRequest
0 голосов
/ 09 марта 2020

Попадание в эту ошибку при попытке собрать приложение response-native v0.61.5 с реакцией навигации на android. iOS работает нормально, не знаю, почему я получаю этот индекс. android ошибка файла, потому что я думал, что слитые индексные файлы реагируют на единственное index.js в качестве точки входа.

это полная ошибка:

Загрузка графика зависимости завершена. Ошибка: невозможно разрешить модуль ./index.android из ``:

Ни один из этих файлов не существует: * index. android (. Native |. android .js | .native.js | .js | . android .json | .native.json | .json |. android .ts | .native.ts | .ts |. android .tsx | .native.tsx | .tsx) * index.android/ индекс (.native |. android .js | .native.js | .js |. android .json | .native.json | .json |. android .ts | .native.ts | .ts | . android .tsx | .native.tsx | .tsx) в ModuleResolver.resolveDependency (/Users/name/Desktop/Development/app/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:163 : 15) в ResolutionRequest.resolveDependency (/Users/name/Desktop/Development/app/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:52:18) в DependencyGraph.resolveDependency (/ имя пользователя /Desktop/Development/app/node_modules/metro/src/node-haste/DependencyGraph.js:282:16) в /Users/name/Desktop/Development/app/node_modules/metro/src/lib/transformHelpers.js: 267: 42 на сервере. (/Users/name/Desktop/Development/app/node_modules/metro/src/Server.js:1088:41) в Generator.next () в asyncGeneratorStep (/ Пользователи / имя / Рабочий стол / Разработка / app / node_modules / metro / src / Server. js: 99: 24) в _next (/Users/name/Desktop/Development/app/node_modules/metro/src/Server.js:119:9)

вот индекс. js:

import { AppRegistry } from 'react-native';
import App from './App';
import 'react-native-gesture-handler';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);

пакет. json:

{
    "name": "appName",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "android": "react-native run-android",
        "ios": "react-native run-ios",
        "start": "react-native start",
        "test": "jest",
        "lint": "eslint ."
    },
    "dependencies": {
        "algoliasearch": "^4.0.3",
        "moment": "^2.24.0",
        "moment-timezone": "^0.5.27",
        "react": "16.9.0",
        "react-instantsearch-native": "^6.3.0",
        "react-native": "0.61.5",
        "react-native-agora": "^2.9.1-alpha.2",
        "react-native-algolia-dropdown": "^1.6.0",
        "react-native-calendars": "^1.220.0",
        "react-native-chart-kit": "^4.3.0",
        "react-native-code-push": "^6.0.0",
        "react-native-extended-stylesheet": "^0.12.0",
        "react-native-firebase": "^5.6.0",
        "react-native-gesture-handler": "^1.5.2",
        "react-native-image-crop-picker": "^0.26.1",
        "react-native-material-dropdown": "^0.11.1",
        "react-native-reanimated": "^1.4.0",
        "react-native-safe-area-context": "^0.6.2",
        "react-native-screens": "^1.0.0-alpha.23",
        "react-native-snap-carousel": "^3.8.4",
        "react-native-splash-screen": "^3.2.0",
        "react-native-svg": "^9.13.6",
        "react-native-view-shot": "^3.1.2",
        "react-navigation": "^4.0.10",
        "react-navigation-drawer": "^2.3.3",
        "react-navigation-stack": "^1.10.3",
        "react-redux": "^7.1.3",
        "redux": "^4.0.4",
        "redux-persist": "^6.0.0",
        "redux-thunk": "^2.3.0",
        "rn-fetch-blob": "^0.11.2",
        "tipsi-stripe": "^7.5.1"
    },
    "devDependencies": {
        "@babel/core": "7.7.5",
        "@babel/runtime": "7.7.6",
        "@react-native-community/eslint-config": "0.0.5",
        "babel-jest": "24.9.0",
        "eslint": "6.7.2",
        "jest": "24.9.0",
        "metro-react-native-babel-preset": "0.56.3",
        "react-test-renderer": "16.9.0"
    },
    "jest": {
        "preset": "react-native"
    }
}

структура проекта enter image description here

Библиотеки правильно интегрированы, любой совет?

Ответы [ 2 ]

2 голосов
/ 09 марта 2020

Выдает ошибку, потому что не может найти индекс. android файл в каталоге root проекта, если у вас есть индекс. ios в вашем проекте

Вы можете создайте файл index. android. js и в этом файле импортируйте исходный индекс. js и проверьте, работает ли он (быстрое исправление)

Итак, в основном после React v0.49 не нужен индекс. ios. js и индекс. android. js. Вам нужен только индекс. js:

Но Есть два случая, когда эта проблема возникает

  • Если вы обновляете со старого Проект, который вы должны убедиться, что правильные файлы загружаются из собственного кода, чтобы принять новую точку входа отдельного файла .
  • И второе - это непоследовательное поведение реагировать нативно, поскольку некоторые люди случайно получают эту проблему в более новой версии из-за сторожа или кэша

Решение для первого случая

//For android in this directory you need to make this change android/app/src/main/java/<yourPackage>/MainApplication.java

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
  //...
  @Override
  protected String getJSMainModuleName() {
    return "index";
  }
};

// и для ios в этом каталоге ios // AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  NSURL *jsCodeLocation;

  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
  //...
}

Эти два решения также работают в некоторых случаях

  • watchman del-all && rm -rf package-lock. json && rm -rf node_modules && rm - rf $ TMPDIR / metro- * && rm -rf $ TMPDIR / haste-map - *

или

  • удалить индекс. ios. js и индекс . android. js и создайте единый индекс. js

Существует определенный сценарий ios, поэтому трудно определить, почему кто-либо получает эту проблему.

0 голосов
/ 09 марта 2020

Запустить упаковщик с очисткой кэша: npx react-native start --reset-cache

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...