将本机模块构建为电子应用程序的一部分

Posted

技术标签:

【中文标题】将本机模块构建为电子应用程序的一部分【英文标题】:Building native modules as part of electron app 【发布时间】:2020-12-29 11:25:40 【问题描述】:

我目前正在使用电子、反应、打字稿和 NodeJS 原生模块构建应用程序。我使用提供的样板代码 (https://github.com/electron-react-boilerplate/electron-react-boilerplate) 启动了应用程序。

我希望在应用程序中添加一些本机模块,最好将其编写为应用程序中的库。目前我已经编写了一个 C++ 模块来读取一些内存统计信息。我可以通过如下方式导入模块,在开发模式下运行模块:const native = require('./lib/memmonitor/build/Release/memmonitor.node');'

我遇到的第一个问题是模块需要通过进入director并手动运行electron-rebuild来手动构建。理想情况下,这应该通过运行 yarn installyarn electron-rebuild 来触发(两者都在样板 package.json 中定义);但是这些命令似乎只关心通过 node_modules 包含的本机模块。

我遇到的第二个问题是,在打包应用程序时,节点模块没有包含在最终构建中,导致电子应用程序由于找不到节点模块而无法启动。

是否可以将原生模块构建为应用程序构建的一部分,并将其包含在最终包中,或者为每个自定义原生模块提供单独的存储库是标准的,让应用程序包含库作为依赖项?

【问题讨论】:

【参考方案1】:

因此,在断断续续地尝试弄清楚如何完成这项工作后,结果发现答案是使用yarn 的单行器。

“诀窍”是使用yarn add link:../path/to/native/module 将模块作为依赖项添加到项目中。这反过来告诉yarn/webpack/electron-builder 模块,工具将正确处理构建模块。

【讨论】:

以上是关于将本机模块构建为电子应用程序的一部分的主要内容,如果未能解决你的问题,请参考以下文章

带有电子的 Vue CLI - 使用本机模块时出现意外字符 (1:0)

如何使用 fs 与电子反应?

不变违规:本机模块不能为空。 React Native Firebase 应用程序

在 Mac 上构建后在电子应用程序中找不到模块

不变违规:本机模块不能为空。错误仅显示在 iOS 上

使用Adobe Air构建Android本机库