修复错误:无法从“”解析模块“./index.android”

Posted

技术标签:

【中文标题】修复错误:无法从“”解析模块“./index.android”【英文标题】:Fix Error: unable to resolve module './index.android' from ' ' 【发布时间】:2020-06-21 04:35:11 【问题描述】:

尝试在 android 上使用 react-navigation 构建 react-native v0.61.5 应用时遇到此错误。 ios 运行良好,不知道为什么我得到这个 index.android 文件错误,因为我认为 react-native 合并索引文件只是单一的 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/index(.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 (/Users/name/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 (/Users/name/Desktop/Development/app/node_modules/metro/src/Server.js:99:24) 在 _next (/Users/name/Desktop/Development/app/node_modules/metro/src/Server.js:119:9)

这里是 index.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);

package.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"
    

项目结构

库已正确集成,有什么建议吗?

【问题讨论】:

升级 react-native-cli? @Jim,您可以通过yarn add @react-native-community/cli@react-native-community/cli 安装到您的应用模块,或者使用npx 启动和运行应用,npx react-native startnpx react-native run-android react-native-cli 对这个停止的影响为零。因为改变绝对没有任何作用。 【参考方案1】:

如果您的项目中有 index.ios,它无法在项目的根目录中找到 index.android 文件,因此会引发错误

您可以创建 index.android.js 文件并在该文件中导入原始文件 index.js 文件并检查它是否有效(快速修复)

所以基本上在 React v0.49 之后,你不需要 index.ios.js 和 index.android.js。你只需要 index.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 watch-del-all && rm -rf package-lock.json && rm -rf node_modules && rm -rf $TMPDIR/metro-* && rm -rf $TMPDIR/haste-map-*

删除 index.ios.js 和 index.android.js 文件并创建一个 index.js

存在某些情况,因此很难确定为什么有人会遇到此问题。

【讨论】:

没有 index.android 和 index.ios 文件。从来没有,而且我以前没有遇到过这个问题 @Jim 你可以创建 index.android.js 文件并在该文件中导入原始 index.js 文件并检查它是否有效 这行得通,虽然我很想知道为什么它首先是随机发生的,但无论如何如果你想重组你的答案,并提供尽可能详细的了解任何可能的原因反应-native 随机强制查找 index.android 文件,可能与 react-navigation 结合使用,将奖励您的赏金 @Jim 很高兴听到这个消息,我已经更新了答案,我已经详细了解了这个问题,希望这能解决您的问题。 绝对精彩的信息答案。当之无愧的赏金【参考方案2】:

使用 cache-clean 运行打包程序: npx react-native start --reset-cache

【讨论】:

刚试过。也预先清洁、重建和重新安装。行为仍然存在【参考方案3】:

我已经解决了

react-native link

【讨论】:

link 在 >0.60 中是不需要的

以上是关于修复错误:无法从“”解析模块“./index.android”的主要内容,如果未能解决你的问题,请参考以下文章

为啥通过保存文件修复了 Eclipse C++“符号 'std' 无法解析”错误?

错误:无法解析模块 react-redux/native

错误:错误:无法从 /node_modules/react-native-reanimated/src/reanimated2/index.ts 解析模块./Hooks

无法解析模块 ./zlib_bindings

Expo React-Native 调试器 - 错误:无法从 ` 解析模块`./debugger-ui/debuggerWorker.cff11639.js`

NUXT:找不到模块:错误:无法解析“fs”