在将React Native集成到现有的Android应用程序中时,需要未知模块“ReactPerf”。

4

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

在应用的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"
        }
    }
}

我已经按照文档这里所述进行了整合,并根据这里的文档升级了RN的git子模块。我已经将我的堆栈跟踪上传到了pastebin链接。总结一下堆栈跟踪,由于格式难以阅读,以下是要点:

  • 找不到生成的com.facebook.react.views.text.ReactVirtualTextViewManager类的setter -- 这适用于大量Native类。也许所有的类都是如此。
  • 错误:需要未知模块“ReactPerf”。如果您确定该模块存在,请尝试重新启动打包器或运行“npm install”
  • JS Exception: Error: 需要引用抛出异常的“23”模块
  • JS Exception: ReferenceError: 找不到变量:__fbBatchedBridge
  • 此外,模拟器显示红色死亡屏幕,其中包含以下消息 -- “错误:需要引用抛出异常的“8”模块”

你解决过这个问题吗? - yedidyak
我通过在应用的build.gradle顶部添加apply from: "../MyGitSubmodule/AwesomeProject/node_modules/react-native/react.gradle"来解决了这个问题。我不想将其作为答案添加,因为我无法准确地解释它的作用。我知道JavaScript存在一些打包问题。react.gradle似乎正在创建一个bundle,但我猜这并不是事实,因为我能够在模拟器中重新加载JS。我希望有更多了解的人能给出一个更明确的答案。 - Mike Ortiz
我通过添加对React的依赖来解决了这个问题。从某个版本的React Native开始,它需要React本身。 - yedidyak
你在npm中添加了依赖吗?还是在gradle中也添加了?我注意到我需要在node中将React作为依赖项添加,但这并没有解决我的问题。 - Mike Ortiz
1个回答

0

基本上,它抱怨需要模块ReactPerf,但它不存在。

顺便说一下,ReactPerf模块:https://www.npmjs.com/package/react-addons-perf

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

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

npm install react-addons-perf,那么我们正在安装它“在外面”react-native依赖项。因此,它会抱怨react-addons-perf也需要react包。

解决方案是我们需要在react-native包“内部”声明此依赖项。换句话说:

打开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"也会消失。

这对我有效,希望对你也有用。


在npm安装之后,是否还缺少$ rnpm link呢? - zipzit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接