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

版权声明:本文为空谷原创文章,未经博主允许不得转载。如需转载请添加微信:kongguxs001 https://blog.csdn.net/simplehouse/article/details/89944108

想在 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 版本不匹配的解决细节

以上


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

猜你喜欢

转载自blog.csdn.net/simplehouse/article/details/89944108