在电子中使用node.js模块

时间:2018-05-06 15:21:27

标签: node.js angular electron capacitor


我有以下用例:
我想开发一个桌面应用程序,它将在Raspberry Pi上运行。我决定使用Electron构建桌面应用程序,使用Angular作为前端框架(1)。

我需要为我的应用程序使用一些npm模块,以便与GPIO引脚或以太网tcp通信(' net'节点模块)进行通信。我尝试在我的Angular应用程序中导入这些内容(例如从网络导入{Socket};),但我不能让它们正常工作。

尝试构建这样的网络套接字时,我收到以下错误: let client = new Socket();

Uncaught(承诺):TypeError:undefined不是构造函数(评估' new net.Socket()')

这是基础架构中的错误,我无法在角度前端运行代码,这取决于后端。或者我做错了什么?

我还找到了电容器(2),它允许调用本机sdks。我尝试实现自己的插件,但是我得到了与上面相同的错误。

感谢您的帮助。

(1)https://angularfirebase.com/lessons/desktop-apps-with-electron-and-angular/
(2)https://capacitor.ionicframework.com/docs/plugins/

1 个答案:

答案 0 :(得分:3)

看起来你对 Electron 有点混淆,即使你不是经典的client:server模型,......

让我们首先了解Electron:

主要和呈现器进程

  

进程用于处理/创建BrowserWindows(渲染器)和   从一个渲染器 - 窗口到另一个渲染器的某些通信。   (也许还有一些其他特殊的东西)

     

渲染器是您真正运行应用程序的最佳位置。有节点,   你有你需要的一切。

然后您会注意到渲染器进程(网页)和主进程之间需要一个频道。

别担心,这里有remote派上用场的地方:

Use main process modules from the renderer process.
     

远程模块提供了一种在渲染器进程(网页)和主进程之间进行进程间通信(IPC)的简单方法。

......甚至反过来......

  

注意:反过来(从main访问渲染器进程)   过程),您可以使用webContents.executeJavascript

所以最后你将能够使用双方的所有魔法。