将本机模块构建为电子应用程序的一部分
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 install
或 yarn electron-rebuild
来触发(两者都在样板 package.json 中定义);但是这些命令似乎只关心通过 node_modules 包含的本机模块。
我遇到的第二个问题是,在打包应用程序时,节点模块没有包含在最终构建中,导致电子应用程序由于找不到节点模块而无法启动。
是否可以将原生模块构建为应用程序构建的一部分,并将其包含在最终包中,或者为每个自定义原生模块提供单独的存储库是标准的,让应用程序包含库作为依赖项?
【问题讨论】:
【参考方案1】:因此,在断断续续地尝试弄清楚如何完成这项工作后,结果发现答案是使用yarn
的单行器。
“诀窍”是使用yarn add link:../path/to/native/module
将模块作为依赖项添加到项目中。这反过来告诉yarn
/webpack
/electron-builder
模块,工具将正确处理构建模块。
【讨论】:
以上是关于将本机模块构建为电子应用程序的一部分的主要内容,如果未能解决你的问题,请参考以下文章
带有电子的 Vue CLI - 使用本机模块时出现意外字符 (1:0)