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

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

1. 安装 robotjs

npm i robotjs

安装到了项目中,然后

require('robotjs');

2. 报错情况

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

/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 命令查看版本
robotjs 踩坑记——Robotjs 安装使用教程指南_第1张图片

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 技术。
robotjs 踩坑记——Robotjs 安装使用教程指南_第2张图片


我是空谷,独立产品经理、全栈设计师、全栈工程师。
技术栈为 React/Dva/Umi/Node/Egg/Electron
欢迎扫码加我微信交流,备注来源:CSDN
robotjs 踩坑记——Robotjs 安装使用教程指南_第3张图片

你可能感兴趣的:(前端开发)