【问题标题】:Angular, electron, typescript and robotjsAngular、电子、打字稿和机器人
【发布时间】:2019-06-20 15:26:00
【问题描述】:

我正在尝试将 Typescript 与 Electron 和 RobotJS 一起使用。 我是所有这些技术的初学者,所以我对幕后发生的事情缺乏深入的了解,所以我无法真正将这个问题的点点滴滴联系起来。 Electron 和我的应用程序运行良好,一切都可以编译,但 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:看来我正在尝试使用依赖于 Angular(渲染进程)中的节点(主进程)的 robotsjs。当我将我试图用robotjs 做的事情从角度组件移到由电子运行的main.ts 时,它起作用了。我会尝试找到一种从角度使用它的方法,我猜是进程间通信之类的,因为我现在找不到任何其他方法。 仍在等待想法,因为我现在有点不知所措。 谢谢!

【问题讨论】:

标签: node.js angular typescript electron robotjs


【解决方案1】:

好的,想通了。 基本上你不能直接从 Angular 访问 Electron 的 Node.js API。 为此,您需要一个名为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);
}

可能不是最好的解决方案,但以我目前对这些技术的有限了解,这将不得不这样做。 我愿意接受意见。

感谢您的宝贵时间,祝您愉快!

【讨论】:

    猜你喜欢
    • 2017-03-16
    • 2018-03-15
    • 2019-04-07
    • 1970-01-01
    • 2020-09-18
    • 2018-04-15
    • 2019-07-04
    • 2016-10-05
    • 2019-03-19
    相关资源
    最近更新 更多