修复错误:无法从“”解析模块“./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 start
和npx 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' 无法解析”错误?
错误:错误:无法从 /node_modules/react-native-reanimated/src/reanimated2/index.ts 解析模块./Hooks
Expo React-Native 调试器 - 错误:无法从 ` 解析模块`./debugger-ui/debuggerWorker.cff11639.js`