React Native+Android Native模块:HMRClient不是注册的可调用模块



我正在为ReactNative开发一个本机模块。现在我在玩本机代码部分。我已经用create-rect本机模块脚本创建了模块。我系统地得到以下错误:

Invariant Violation: Module HMRClient is not a registered callable module (calling setup)

我已经将问题归结为当我在index.js中引用我的模块的NativeModules时:

import { NativeModules } from 'react-native';
//const <...my module name...> = NativeModules.<...my module name...>;  // <---- NOT WORKING
class <...some js class...> {
constructor() {
const <...my module name...> = NativeModules.<...my module name...>;  // <-- WORKING
<...my module name...>.debugMessage("Salve mondo advertising");
}
}

也许是库加载时出现了一些奇怪的种族状况?

该HMRClient错误的常见解决方法(禁用应用程序上的快速刷新、清理gradlie构建和/或node_modules等(似乎不起作用。

这是我的react-native info输出:

System:
OS: Linux 4.15 Ubuntu 18.04.4 LTS (Bionic Beaver)
CPU: (8) x64 Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz
Memory: 947.73 MB / 15.60 GB
Shell: 4.4.20 - /bin/bash
Binaries:
Node: 11.10.1 - /usr/local/bin/node
Yarn: 1.22.4 - /usr/local/bin/yarn
npm: 6.8.0 - /usr/local/bin/npm
SDKs:
Android SDK:
API Levels: 25, 28
Build Tools: 25.0.2, 28.0.3, 29.0.0, 29.0.3
System Images: android-19 | Intel x86 Atom, android-28 | Intel x86 Atom, android-28 | Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom
npmPackages:
react: ^16.9.0 => 16.13.1 
react-native: ^0.61.5 => 0.61.5 
npmGlobalPackages:
react-native-cli: 2.0.1

我也遇到过类似的问题。

据我所知,您的模块没有在npm上发布,也没有从node_modules导入。

当您将模块的index.js文件放置在它使用的react本机项目之外时,可能会发生这种情况。它导致react native的双重导入。所以registerCallableModule('HMRClient')调用两次。所以它导致了这个错误

尝试将本机模块的index.js文件替换为react本机项目。它对我有效

最新更新