robotjs 踩坑记——Robotjs 安装使用教程指南

想在 Electron 上实现跨应用复制文本,发现目前可能唯一能实现的是 robotjs。中途踩了不少坑,写下这篇安装教程指南记录。

1. 安装 robotjs

npm i robotjs

安装到了项目中,然后

require('robotjs');

2. 报错情况

很不幸,翻车了,报错提示

<project>/node_modules/robotjs/build/Release/robotjs.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 57. 
This version of Node.js requires NODE_MODULE_VERSION 54. 
Please try re-compiling or re-installing the module (for instance, using npm rebuild or npm install).

3.报错原因分析

意思是robotjs.node 是另外一个版本的 Node 编译的,与目前使用的 Node 版本不一致,需要重新编译一下robotjs。
大概翻了翻robotjs源码,的确发现有c文件,可能就是需要编译下,第一次接触这块,可能需要我更换对应NODE_MODULE_VERSION版本的node,但是查阅node文档发现不是node版本的问题,而是Electron使用的node版本。
使用 process.versions 命令查看版本
在这里插入图片描述

4. 解决方案

那正确的解决方案怎么办呢?直接使用 electron-rebuild 模块

yarn add electron-rebuild --dev
./node_modules/.bin/electron-rebuild

但是有个细节前提需要注意,那就是你需要electron-rebuild重新build的模块必须在dependencies中,不能在devDependencies中。因为electron-rebuild只会rebuild dependencies中依赖,具体可以看这里ref node version error

5.参考资料

  1. elecctron引入robotjs的坑
  2. npm安装deasync引用出错
  3. ref node version error
  4. electron node 版本不匹配的解决细节

鉴于国内关于 Electron 的讨论交流都不多,我建了一个 「Electron 技术研究小组」,欢迎点击扫描下面的二维码加入,共同研究 Electron 技术。
在这里插入图片描述


我是空谷,独立产品经理、全栈设计师、全栈工程师。
技术栈为 React/Dva/Umi/Node/Egg/Electron
欢迎扫码加我微信交流,备注来源:CSDN
kongguxs001

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
electron-builder 是一个用于 Electron 应用程序的构建工具,可以将您的应用程序打包为各种不同的格式并自动化构建过程。要正确打包 robotjs,您需要在您的 Electron 项目中进行以下步骤: 1. 在您的 Electron 项目中安装 robotjs: ``` npm install robotjs --save ``` 2. 在您的 Electron 项目中的 package.json 文件中添加以下依赖项: ``` "dependencies": { "robotjs": "^0.6.0" }, "build": { "extraResources": [ { "from": "node_modules/robotjs/build", "to": "robotjs/build" } ] } ``` 3. 在您的 Electron 项目中的 main.js 文件中添加以下代码: ```javascript const path = require('path'); const { app, BrowserWindow } = require('electron'); const robot = require('robotjs'); // 让 robotjs 可以在 Electron 中正常工作 if (process.platform === 'win32') { process.env.ROBOTJS_X11_DISPLAY = ':0'; } // 初始化窗口 function createWindow() { const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false, enableRemoteModule: true, }, }); // 加载应用程序的 index.html mainWindow.loadFile('index.html'); // 打印屏幕宽度和高度以测试 robotjs 是否正常工作 console.log('Screen width:', robot.getScreenSize().width); console.log('Screen height:', robot.getScreenSize().height); } // 在应用程序准备好时创建窗口 app.whenReady().then(() => { createWindow(); }); ``` 4. 打包您的 Electron 应用程序: ``` electron-builder build ``` 这将构建您的应用程序并将 robotjs 包含在内。请注意,由于 robotjs 使用了本机模块,因此您需要根据您的操作系统正确设置环境变量以使其正常工作。在 Windows 上,您需要设置 `ROBOTJS_X11_DISPLAY` 环境变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值