我正在尝试与Electron和RobotJS一起使用Typescript。我是所有这些技术的初学者,所以我对幕后发生的事情缺乏深入的理解,所以我无法真正将这个问题联系起来。电子和我的应用运行得很好,一切都编译好了,但是RobotJS不能工作。我得到的错误如下:
ERROR in ./node_modules/robotjs/build/Release/robotjs.node 1:0
Module parse failed: Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)我试着为Electron重建RobotJS,但它仍然不能工作。这是一个本机节点模块吗?我不确定,如果真的是这样的话,我得先读一读它,弄清楚我要用它做什么。
这是可以实现的吗?谢谢,祝你有愉快的一天!
LE:看起来我是在尝试使用robotjs,它依赖于angular (渲染进程)中的节点(主进程)。当我将我试图用robotjs做的事情从角度组件转移到由电子运行的main.ts时,它成功了。我会尝试从angular中找到使用它的方法,我猜是进程间通信或其他什么,因为我现在找不到任何其他方法。因为我现在有点摸不着头脑,所以我还在等待点子。谢谢!
发布于 2019-01-28 05:26:21
好了,我想通了。基本上,你不能直接从Angular访问Electron的Node.js应用程序接口。为此,您需要一个名为ngx-electron的出色工具。阅读关于它的here或只是谷歌它。安装此工具后,您可以按照大多数指南的指导,直接使用DI服务,然后使用Electron remote访问robotjs。基本上是这样的:
const robot = this._electronService.remote.require('robotjs');
// The example supplied by robotjs
robot.setMouseDelay(2);
const twoPI = Math.PI * 2.0;
const screenSize = robot.getScreenSize();
const height = (screenSize.height / 2) - 10;
const width = screenSize.width;
for (let x = 0; x < width; x++) {
const y = height * Math.sin((twoPI * x) / width) + height;
robot.moveMouse(x, y);
}可能不是最好的解决方案,但以我目前对这些技术的了解有限,这将不得不这样做。尽管如此,我还是乐于听取意见。
感谢您的宝贵时间,祝您愉快!
https://stackoverflow.com/questions/54388226
复制相似问题