在将React Native与现有Android应用程序集成时需要未知模块“ReactPerf”

时间:2016-05-05 09:24:41

标签: android react-native

我正在尝试集成最新的React Native构建,但我遇到了错误。这是我的项目设置:

在app的build.gradle中,我导入react-native 0.24.1:

dependencies {
  ...
  compile 'com.facebook.react:react-native:0.24.1'
}

项目的build.gradle指向Git子模块中的React Native:

allprojects {
    repositories {
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$projectDir/../MyGitSubmodule/AwesomeProject/node_modules/react-native/android"
        }
    }
}

我按照文档here中的说明进行了整合,并按照文档here中的说明在git子模块中升级了RN。我已将我的堆栈跟踪上传到此pastebin link。要总结堆栈跟踪,因为格式化难以阅读,这些是亮点:

  • 找不到类com.facebook.react.views.text.ReactVirtualTextViewManager的生成setter - 这适用于大量的Native类。也许所有这些。
  • 错误:需要未知模块“ReactPerf”。如果您确定该模块在那里,请尝试重新启动打包程序或运行“npm install”
  • 得到JS异常:错误:要求模块“23”引发异常
  • 得到JS异常:ReferenceError:找不到变量:__ fbBatchedBridge
  • 此外,模拟器显示红色死亡屏幕,并显示以下消息 - “错误:需要模块”8“引发异常”

1 个答案:

答案 0 :(得分:0)

基本上,它抱怨模块ReactPerf是必需的,但它并不存在。

仅供参考,ReactPerf模块:https://www.npmjs.com/package/react-addons-perf

逻辑上,我们只需要告诉react-native安装这个东西。

棘手的部分是,如果我们这样做:

npm install react-addons-perf,然后我们正在安装它"外面" react-native依赖关系。因此,它会抱怨react-addons-perf也需要react个包。

解决方案是我们需要声明这种依赖"内部"反应原生包。换句话说:

打开node_modules/react-native/package.json。你会发现

...
"dependencies": {
"absolute-path": "^0.0.0",
"art": "^0.10.0",
"babel-core": "~6.4.5",
"babel-plugin-external-helpers": "~6.4.0",
...
"react": "^0.14.5"
...
}

因此,我们需要做的只是将react-addons-perf添加到那些。

...
"dependencies": {
"absolute-path": "^0.0.0",
"art": "^0.10.0",
"babel-core": "~6.4.5",
"babel-plugin-external-helpers": "~6.4.0",
...
"react": "^0.14.5",
"react-addons-perf": "^0.14.5", // ADD THIS LINE FOR ReactPerf module
...
}

然后,npm install

根据我的经验,Requiring module "8"等其他错误也将消失。

它对我有用,并且希望它也适合你。