问题标签 [native-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1582 浏览

react-native - 在 ReactNative 中创建 android 本机模块时“未定义不是函数”

我正在按照ReactNative Native Module Guide编写可以在 JS 端使用的 java 类。导出的方法show来自类ToastModule(导出为ToastAndroid)。show方法如下:

当我从 Button onPress 处理程序调用 ToastAndroid.show 时,toast 按钮的所有工作都会按预期出现。

但是,当我进一步更改函数名称时

我遇到以下错误:“未定义不是函数”

在此处输入图像描述

如果我添加新的导出方法,则会再次显示此错误,如下所示:

有谁知道我走错了哪一步?

编辑===========================

ToastAndroidReactNative 中可能已经有 a ,所以我将名称更改为MyToastExample. 但是,现在错误变为以下

在此处输入图像描述

有没有人遇到同样的问题?

0 投票
3 回答
3164 浏览

react-native - React Native NativeModules 空对象

尝试创建我的第一个 npm 模块以确定用户是否在打电话。它适用于 React Native 应用程序。无论我尝试什么,模块都会返回未定义。NativeModules 总是看起来是一个空对象。

请帮忙!下面是代码的链接。export default RNOnPhoneCall;inindex.js只会返回未定义的。如何链接ios文件夹中的功能,并将它们导出index.js?注意,android还不是最新的,只有ios.

链接到 Github

0 投票
1 回答
2031 浏览

java - 导入的 Android 原生模块总是“未定义”

我已经为 react-native 制作了原生 android 模块。我退出了该应用程序并添加了本机代码以使用蓝牙热敏打印机进行打印。我已经使用 android studio 测试了本机 android 代码,并且打印效果很好。在我将模块添加到 react-native android 之后,它打印了几次文本。后来,它停止打印。我总是在 Javascript 中将导入的模块作为未定义的。

BlueToothUtils.java: 这个文件在 react-projectfolder\android\app\src\main\java\\thermal_printer\

同一包中的另一个模块是 PrintUtils.java:

在同一目录中还有另一个类 PairedDevice PairedDevice.java :

同一目录中的包类是ThermalPrinterPackage

MainApplication.java文件现在如下:

我正在按如下方式导入和使用它:

...

蓝牙Utils.js

PrintUtils.js

它已经工作了几次。在我将模块添加到 react-native 后,它没有打印图像。但它确实打印了大部分时间。但现在它根本没有打印,甚至没有文本。任何人都可以帮忙吗?提前致谢。

0 投票
2 回答
4182 浏览

java - 如何从 React Native 组件中的 Java 模块返回数组?

我写这篇文章是为了回答我自己的问题,因为文档没有明确说明这一点,而且我在堆栈溢出或其他任何地方都找不到它。以下是如何将 Java 模块中的 String 数组返回到 React Native 组件中(根据我个人项目中的代码进行了简化)。

CPPConnection.java 文件

密度.js 文件

0 投票
1 回答
1014 浏览

node.js - 无法在电子项目中导入本机 nodejs 模块

我正在开发一个使用 webpack 构建的开源电子项目。我的项目的一项要求是使用必须构建为本机模块的nodegit库。

在使用本机模块和电子时,我遵循了看似传统的建议。也就是说,我运行了 electron-rebuild配置了要使用的源包,最后配置了 node-loader来捕获任何.node文件的导入。

不幸的是,当我去包含模块时,我最终得到了这个错误:

在这一点上我唯一能看到的可疑之处是,当我重建模块以使用电子时,我只得到一个Release目录,而导入似乎正在寻找Debug

在此处输入图像描述

然而,这可能是一个红鲱鱼,因为 nodegit 被写入尝试Debug作为Release失败后的后备。

这里的一般问题是“如何让这个本机模块在我的项目中工作?”。

在 repo 也有一个相应的问题,尽管如果我的问题与库本身无关,或者有一些电子原生模块的老兵,我认为 SO 将是一个好地方也检查一下。

0 投票
1 回答
2766 浏览

ios - 从本机代码调用 JavaScript 函数

我有一个 react-native 应用程序,并希望将其与原生 SDK 集成。在某些时候,我需要调用 js 函数来返回数据,而我应该从本机端进行这个调用。这是流程:

  1. 一些 iOS 处理程序需要更多信息
  2. native层调用js代码
  3. js代码计算/获取所需数据
  4. js代码将数据返回到本机代码
  5. 本机代码接收数据并继续工作

可能吗?有一个库react-native-eval,但可能有更优雅的方式来做到这一点?

0 投票
1 回答
926 浏览

webpack - 尝试使用 electron-webpack 链接本机模块

我使用 v8.h 标头在 C++ 中编写了一个本机模块,我想将它导入到我的电子应用程序中。

该模块工作正常。我在它自己的文件夹中编译它,然后我将 .node 复制粘贴到这个样板中https://github.com/szwacz/electron-boilerplate我需要它使用bindings包。

我想以此https://github.com/electron-userland/electron-webpack-quick-start作为起点来构建我的电子应用程序。主要有两个原因:这是推荐的方式,它承诺将您的应用程序打包为 macOS、Linux 和 Windows。我在项目的根文件夹中复制了包含源代码的文件夹,我将bindings.gyp文件 添加"nodeGypRebuild": "true",package.json了根文件夹中。该模块已编译,yarn install但如果我尝试将其导入import {Module} from 'MyModule'src/main/index.js运行yarn dev输出是

在谷歌搜索问题时,我发现这里https://github.com/chentsulin/electron-react-boilerplate/wiki/Module-Structure----Two-package.json-Structure现在我更加困惑,因为有没有app/文件夹electron-webpack-quick-start

有人可以帮我找到摆脱这个死胡同的方法吗?是否存在涵盖此案例的文档?即使是一个工作示例,例如我可以学习的开源项目,也会有所帮助。

编辑:为了更好地理解问题,我创建了一个简单的 git 存储库:https ://github.com/BiancoA/electron-webpack-quick-start-nm

0 投票
1 回答
302 浏览

react-native - 如何创建本机模块以在本机反应中检索领域数据值?

我已经找到了将近两天的时间来获取一些关于使用本机模块在 react-native 中访问领域数据库的教程/参考

但到目前为止还没有运气,

我有领域包,node_modules但我无法添加Realm.init(context)到 android 文件夹中,因为我没有import io.realm.*

有什么方法可以检索领域数据库值?

0 投票
2 回答
735 浏览

react-native - 如何为反应原生应用程序创建自定义原生模块android?

我在 android studio 中构建了简单的服务,以在控制台日志中每秒运行一个服务,

我想在 react native 中实现我的 android studio 代码

有办法吗?

假设我有一个代码:

myService.class

MainActivity

0 投票
0 回答
206 浏览

ios - 如何从ios获取气压并通过native模块传递给React Native

这个问题大部分来自于我完全缺乏 iOS 和 Objective C 的经验。

我已经建立了一个原生模块,其简单目标是传递来自 ios 的气压读数来反应原生。我让下面的代码只使用一个字符串,但是当我尝试读取压力时,它不会通过。非常感激任何的帮助。

这是我的 Barometer.h 文件

这是我的 Barometer.m 文件

这就是我在 React 方面的称呼

我知道我已经正确连接了所有东西,因为我能够将一个字符串传递给 .m 文件中的回调并在 js 控制台中看到它。就像我说的那样,我对目标 C 的经验为零。我可以找到的气压计读数的每个示例都在视图控制器中对其进行了初始化,但是由于我只对值感兴趣而不在任何地方显示它,所以我不知道如何正确地声明这件事。