问题标签 [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 投票
1 回答
36763 浏览

reactjs - 我们是否需要使用 React Native 0.60 运行 `pod install`?

我正在使用 React Native 0.60.5 并正在链接这个模块。它说对于 React Native 0.60+,“CLI 自动链接功能在构建应用程序时链接模块”,所以我们只需要运行yarn add @react-native-community/async-storage.

但是,在描述自动链接的主页上,它说我们需要运行:

yarn add @react-native-community/async-storage cd ios && pod install && cd ..

我想知道的:

我们是否必须pod install使用 React Native 0.60+ 运行所有本机模块?

0 投票
0 回答
479 浏览

node.js - 如何在 pkg 中要求 file.node

我使用 pkg 发布了使用 node-native-printer 模块的节点应用程序的可执行版本。

作为运行 node-native-printer 的先决条件,您需要安装 edge-js 包。

要遵循此处的表格,使用 pkg 我能够创建 app.exe 而没有任何错误或警告。

当我运行 app.exe 时问题很棘手,它失败并显示以下错误消息:

pkg/prelude/bootstrap.js:1185 抛出错误;^

错误:模块没有自注册。在 Object.Module._extensions..node (internal/modules/cjs/loader.js:728:18) 在 Module.load (internal/modules/cjs/loader.js:598:32) 在 tryModuleLoad (internal/modules/ cjs/loader.js:537:12) 在 Function.Module._load (internal/modules/cjs/loader.js:529:3) 在 Module.require (internal/modules/cjs/loader.js:635:17)在 Module.require (pkg/prelude/bootstrap.js:1166:31) 在对象的 require (internal/modules/cjs/helpers.js:22:18)。(C:\snapshot\edge-js-native-printer\node_modules\edge-js\lib\ enter code hereedge.js:104:8) 在 Module._compile (pkg/prelude/bootstrap.js:1261:22) 在 Object .Module._extensions..js (internal/modules/cjs/loader.js:710:10)

经过数小时的调试,我发现运行时的 pkg 无法要求 edge_nativeclr.nodeC:\snapshot\edge-js-native-printer\node_modules\edge-js\lib\native\win32\x64\10.14.0\edge_nativeclr

在 edge.js 的代码下:

有人遇到这个问题吗?任何解决它的想法将不胜感激。

此致

0 投票
0 回答
373 浏览

javascript - 试图让串口与电子一起工作。在电子重建上出现很长的错误

我正在尝试让串行端口与电子一起工作。Serialport 是原生模块,所以我了解到您必须重新编译它才能使用电子。我已经完成了这里其他几个线程所说的步骤,当我运行 npm install 时,我收到了这个疯狂的长错误消息

该消息持续了大约四倍的长度......

我的 package.json 看起来像这样:

我不知道我做错了什么导致如此疯狂的错误,我使用的是最新版本的一切(节点、套接字和电子重建)

编辑:IDK,如果这有帮助,但是当我尝试运行它时遇到同样的错误:https ://github.com/serialport/electron-serialport项目。

编辑 2:已解决:我必须安装 MSVS 2017 构建工具才能让 nodegyp 工作。

0 投票
0 回答
364 浏览

c++ - 使用 Node.JS 原生模块时的内存泄漏

在我的工作中,我们有很多可以从 Node.JS 通过本机扩展调用的 C++ 代码。许多创建的对象包含指向大量内存的指针(例如,来自 3D 相机的点云数据指向大小超过 1 兆字节的缓冲区)。事情已经以这样一种方式设置,当 JS 对象被 GC'ed 时,底层的本地对象也应该被销毁(通过使用我们自己的引用计数器在引擎盖下)。昨天事实证明,它并没有像我们想象的那么好,因为我们每秒泄漏大约 1 兆字节而耗尽了内存。

不幸的是,我无法找到有关如何在 Node.JS 中正确处理这些大型对象的信息。我找到了一个名为的函数napi_adjust_external_memory,它可以让我知道有多少数据正在使用,以及“将比其他情况更频繁地触发全局垃圾收集”,但我不知道如果没有其他部分是否可以使用使用 N-API。我不清楚 OOM 错误是由我们的 C++ 代码库中的错误引起的,还是 Node.JS 错误地假设它使用的内存比实际使用的内存少,因此没有为这些对象触发 GC。

所以,总而言之,我的问题如下:

  • 尽管存在内存压力,这些对象是否可能从未被收集?

  • 我可以使用 napi_adjust_external_memory 更频繁地触发 GC 而不使用 N-API 的其他部分吗?

  • 我应该如何处理 Node.JS 中的大型原生对象以确保它们不会泄漏?

0 投票
0 回答
741 浏览

react-native - 原生模块不能为空 - react-native-purchase

我很快就会为此失去理智,但它就是这样:-)

我想RevenueCat/react-native-purchases在我的项目中使用,但是一旦我导入

我收到消息“本机模块不能为空”

我有一个裸项目的测试仓库,我也无法让它工作

您可以在 repo 中看到 package.json 和 Podfile - 我正在使用 yarn 将它们放在一起。

libRNPurchases.a我已经在 Xcode中添加到我的项目中,并且我已经多次重做这些说明:-$

为了快速参考这里是我的 package.json 文件

PodFile 是:

由于 expo,我正在使用 React-Native "0.59.10" - 所以它仍然使用旧的 pod 文件格式。

有什么想法我需要做什么吗?

0 投票
1 回答
142 浏览

react-native - 如何在从关闭更改为打开时检查 wifi 状态

我想使用本机模块在 react-native 中使用服务,如果 Wifi 连接从关闭更改为打开,只需显示连接更改的 toast

0 投票
0 回答
314 浏览

electron - Electron 7 无法构建原生模块

我正在构建一个运行本机模块的电子应用程序。我升级到 Electron 7,但从那时起,当我使用 electron-forge 构建应用程序时出现以下错误。

我还将我的节点版本升级到 12.8.1。

为了加载本机模块,我使用了 node-ffi 的一个分支

我该如何解决?

谢谢!

0 投票
0 回答
162 浏览

android - 如何断开WiFi并连接到SSID和密码可用的wifi?

我正在尝试断开与 WiFi 的连接并连接到处于访问模式的不同 wifi,我必须连接到它才能配置属性。无论如何我可以做到这一点吗?

我在网上找到了一篇中篇文章。

https://medium.com/woost/programatically-connecting-to-wifi-networks-in-react-native-on-ios-11-6103b726c3b0

我曾尝试使用本机模块,但我找不到任何适用于 Android 的东西。有没有我可以用来执行此操作的库?

0 投票
1 回答
565 浏览

android - 在 Android Studio 中调用 onDestroy 方法时,如何在 React Native 中调用函数?

我想在用户退出应用程序之前将用户上次访问的屏幕保存在异步存储中。由于 react-native 中没有生命周期事件来查找正在关闭的应用程序,因此我想在 android 中发生 OnDestroy 事件时触发 react-native 中的函数。

0 投票
5 回答
4015 浏览

react-native - typeError: null is not an object while access the Native Module

我正在开发一个 React Native 应用程序并尝试从 android 访问 Native Module。我正在关注这个官方文档 在此处输入链接描述

创建本机模块后,当我尝试在 javaScript 类中访问它时,它显示错误“typeError: null is not an object (Evaluating _ToastExample.default.show)”

ToastModule.java

CustomToastPackage.java

在 MainApplication.java 中插入了这个片段

ToastExample.js

App.js 这里我只是想从 Android Native Module 调用那个简单的 Toast 函数。

附上错误截图。 在此处输入图像描述

我是 ReactNative 的新手,所以请帮我解决这个问题。提前致谢。