elecctron引入robotjs的坑

简介: elecctron引入robotjs的坑

想在Electron上实现截图、屏幕取色的功能,然后各种搜索最终锁定了robotjs这个node库,在GitHub上也搜到一个做的比较叼的Electron应用colorpicker,发现用的就是这个robotjs。既然人家能做的这么叼,那么这个库一定很好用,robotjs的GitHub也算是star比较多的。

首先我使用npm i robotjs安装到了项目中,然后require('robotjs');很不幸,翻车了,报错提示'<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). 好像大概意思是需要我重新编译一下robotjs,大概翻了翻robotjs源码,的确发现有c文件,可能就是需要编译下,第一次接触这块,可能需要我更换对应NODE_MODULE_VERSION版本的node,但是查阅node文档发现

网络异常,图片无法展示
|

好坑爹啊,没有54,那么54是从哪里来的呢?之后使用nvm切换各种node版本尝试都对应不上,后来苦苦google搜索,突然发现有篇博客

网络异常,图片无法展示
|

在另外的一篇博客也有提到

网络异常,图片无法展示
|

哇。。好惨,不是node版本的问题,Electron使用的node版本这么坑,卧槽! 那正确的解决方案怎么办呢?博客中提到了electron-rebuild,我猜可能需要我使用指定的Electron版本编译出来一个robotjs.node,那么creator使用的Electron版本多少呢?

网络异常,图片无法展示
|
process.versions里面有,使用的是1.7.5,需要注意的是,Creator在1.7的版本升级了node版本,所以,这个也有点坑哈,让我哭一会! 找到了Electron的开发版本,在 robotjs的npm文档的building部分上并没有细说编译参数,但是提到了使用node-gyp,那么我们就全局安装下 npm i -g node-gyp文档上说要build下,那么就执行下 node-gyp rebuild --runtime=electron --target=1.7.5 --disturl=https://atom.io/download/atom-shell --abi=48注意这个--target就是Creator使用的Electron版本,在Creator2.x版本中使用的是1.7.5,如果不出意外,会重新生成一份node_modules/robotjs/build/Release/robotjs.node执行文件,Creator再次require的时候,就能正常使用了。

也有其他解决方案说要安装electron-rebuild,但是从我个人使用来说,好像没用上,后续再研究吧

总结一句话,如果对node编译二进制包不了解的话!真的很坑!

在robotjs的GitHub上也有相关issue提到了这个问题,解决办法大致相同。

其他方案:

网络异常,图片无法展示
|
不过使用起来可能有点麻烦,要想获取某个位置的像素,可能还需要自己额外处理

  • Electron应用nanako同样也实现了这个拾色功能,其实也是调用了screencapture,不过这个好像只处理了Mac平台

网络异常,图片无法展示
|

之后这个在获取到截图之后,为了获取某个位置的像素,做了for循环处理,看的也是有点懵逼

网络异常,图片无法展示
|

网络异常,图片无法展示
|



目录
相关文章
|
6天前
|
前端开发 JavaScript
【经典】全局公共scss文件的引入使用
【经典】全局公共scss文件的引入使用
|
6天前
|
资源调度
项目 引入 uView
项目 引入 uView
17 0
|
6天前
RuntimeSchema包无法引入问题
RuntimeSchema包无法引入问题
14 0
|
6天前
elementPlus引入
elementPlus引入
30 1
|
5月前
|
缓存 Java
引入一个boot模块坑
引入一个boot模块坑
24 1
|
6月前
|
JavaScript 前端开发 Java
项目引入文件的常见报错
项目引入文件的常见报错
50 5
|
9月前
|
JavaScript
vue框架项目中怎样引入外部组件
这里以引入vant组件为例
86 0
|
9月前
|
编译器 Shell C++
如何在项目中引入googtest(上)——通过编译器引入库
如何在项目中引入googtest(上)——通过编译器引入库
104 0
|
9月前
|
编译器 程序员 C++
如何在项目中引入googtest(下)——通过CMake引入库
如何在项目中引入googtest(下)——通过CMake引入库
100 0
|
11月前
|
机器学习/深度学习 数据可视化 数据挖掘
【学习】代码里引入的包都是啥东西
【学习】代码里引入的包都是啥东西
143 0