小白3天精通跨平台React Native鸿蒙开发:MutilBundle加载方案实现路由跳转Bug:bundles\basic.js was not found
error The resource`D:\RN\HarmonyRnShop\bundles\basic.jswas not found. Error: The resource `D:\RN\HarmonyRnShop\bundles\basic.js was not found.
at D:\RN\HarmonyRnShop\node_modules\@react-native-oh\react-native-harmony-cli\node_modules\metro\src\Incrementa1Bund1er.js:255:24
at gotStat(node:fs:2941:21)
at callback (D:\RN\HarmonyRnShop\node_modules\gracefu1-fs\po1yfi11s.js:306:20) at FSReqCa11back.oncomplete (node:fs:197:21)
在React Native项目中遇到“The resource `D:\RN\HarmonyRnShop\bundles\basic.js was not found.”这类错误通常意味着在尝试加载一个JavaScript文件时,系统无法在其指定的路径找到该文件。解决这个问题通常可以通过以下几个步骤:
-
检查文件路径:
确认basic.js文件确实存在于你的项目路径D:\RN\HarmonyRnShop\bundles\下。你可以使用文件资源管理器查看该目录,或者使用命令行工具(如cmd或PowerShell)运行以下命令:dir D:\RN\HarmonyRnShop\bundles\basic.js如果该命令返回文件不存在,那么你需要创建这个文件或者更正引用路径。
-
检查引用方式:
如果你在使用React Native的require函数或者import语句来引用这个文件,确保路径是正确的。例如,如果你在代码中使用了:import Basic from './basic.js';确保
basic.js文件位于当前文件的同一目录下,或者正确指定相对路径或绝对路径。 -
检查Webpack或Metro配置:
如果你在使用Webpack或Metro Bundler,确保配置文件中没有错误地排除了这个文件。对于React Native项目,通常使用Metro Bundler,你需要检查metro.config.js文件,确保没有错误地配置了对该文件的处理。例如,确保没有在blacklistRE或类似配置中排除了这个文件。 -
清理和重建:
有时候,简单的清理和重建项目可以解决这类问题。你可以尝试清理缓存并重新启动开发服务器:- 清理缓存(如果你使用的是React Native CLI):
npx react-native start --reset-cache - 重启Metro Bundler:
npx react-native start --reset-cache - 重启开发服务器:
npx react-native run-android 或者 npx react-native run-ios
- 清理缓存(如果你使用的是React Native CLI):
-
检查环境问题:
确保你的开发环境设置正确,例如Node.js和npm/yarn的版本是否兼容你的项目需求。有时候,升级或降级某些工具版本可以解决问题。
通过上述步骤,你应该能够定位并解决“资源未找到”的错误。如果问题仍然存在,可能需要更详细地检查项目的配置或寻求社区的帮助。

这是一个React Native Metro打包器在寻找入口文件时出现的路径解析错误。系统无法在指定位置找到D:\RN\HarmonyRnShop\bundles\basic.js这个文件。
错误原因分析
文件路径配置问题:Metro打包器在basic.config.js配置文件中指定的入口文件路径不正确,导致无法加载基础的JavaScript文件。
具体问题表现
从错误堆栈可以看出:
- 资源查找失败:在D:\RN\HarmonyRnShop\bundles\目录下找不到basic.js文件
- 配置链断裂:从IncrementalBundler.js到文件系统的查找过程出现问题
- 路径解析异常:Node.js的文件系统模块在解析路径时遇到障碍
解决方案
立即修复步骤
-
检查文件存在性
首先确认D:\RN\HarmonyRnShop\bundles\basic.js文件是否真实存在于你的项目中。 -
验证配置文件路径
检查basic.config.js中的入口文件配置是否正确:
// 正确的配置示例
module.exports = {
entry: './src/bundles/basic/basic.js',
// 其他配置...
}
- 重新生成Bundle文件
在项目根目录执行正确的生成命令:
npm run dev
或者根据你的具体配置:
npm run dev:basic
路径配置验证
根据你的项目结构,正确的路径应该是:
入口文件:D:\RN\HarmonyRnShop\src\bundles\basic\basic.js
完整的排查流程
步骤1:项目结构检查
确认你的项目具有正确的目录结构:
HarmonyRnShop/
├── src/
│ └── bundles/
│ └── basic/
│ └── basic.js
├── harmony/
│ └── entry/
│ └── src/
│ └── main/
│ └── resources/
│ └── rawfile/ # Bundle生成位置
└── package.json
步骤2:配置文件修正
检查并修正basic.config.js文件:
// basic.config.js 正确配置
module.exports = {
entry: './src/bundles/basic/basic.js',
bundleOutput: '../harmony/entry/src/main/resources/rawfile/bundle/basic/basic.harmony.bundle',
// 其他必要配置
}
建议:立即检查你的basic.config.js文件中entry配置项指定的路径是否正确,确保src/bundles/basic/basic.js文件确实存在,然后运行npm run dev重新生成Bundle文件。
实际解决方案:
basic.js:

flight.js:

接下来通过打包命令npn run harmony将reactNative的代码打包成为bundle,这样可以进行在开源鸿蒙OpenHarmony中进行使用。
最终实现效果是:

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。
更多推荐


所有评论(0)