官网
ROBOTJS官网: https://robotjs.io/docs/ ROBOTJS源码: https://github.com/octalmage/robotjs NodeJS地址:https://nodejs.org/en/download/ Electron版本: https://electronjs.org/releases/stable
环境设置
Node版本不要用最新版本 用v10.16.3即可
安装cnpm
代码语言:javascript复制npm install -g cnpm --registry=https://registry.npm.taobao.org
或者更新npm的包镜像源
代码语言:javascript复制sudo npm config set registry https://registry.npm.taobao.org
sudo npm config list
还原默认配置
代码语言:javascript复制sudo npm config set registry https://registry.npmjs.org
注意:要用管理员身份运行CMD
代码语言:javascript复制npm install -g --production windows-build-tools
npm install -g node-gyp
如果windows-build-tools删除下面的文件夹(根据自己系统的情况查找)
代码语言:javascript复制C:UsersJianAppDataRoamingnpmnode_moduleswindows-build-tools
重新安装
设置python路径
代码语言:javascript复制npm config set python C:UsersJian.windows-build-toolspython27python.exe
构建
添加robotjs依赖为Git仓库
代码语言:javascript复制"dependencies": {
"robotjs": "git https://github.com/octalmage/robotjs.git"
}
安装依赖
代码语言:javascript复制npm install
打开项目下的node_modules
下的`_robotjs@0.5.1@robotjs`文件夹
如果没有生成/build/Release/robotjs.node
就执行下面的操作
下载依赖
代码语言:javascript复制cnpm install
编译
代码语言:javascript复制node-gyp rebuild --python C:UsersJian.windows-build-toolspython27python.exe
构建的robotjs.node
的Node版本如果和Electron中的Node版本不一样的话就需要执行下面的rebuild操作
查看系统的Node版本
代码语言:javascript复制node -v
获取Electron内部的node版本
在代码中打印信息
代码语言:javascript复制console.info(process.versions);
结果如下
代码语言:javascript复制ares: "1.15.0"
brotli: "1.0.7"
chrome: "76.0.3809.146"
electron: "6.0.12"
http_parser: "2.8.0"
icu: "64.2"
llhttp: "1.1.3"
modules: "73"
napi: "4"
nghttp2: "1.38.0"
node: "12.4.0"
openssl: "1.1.0"
unicode: "12.1"
uv: "1.29.1"
v8: "7.6.303.31-electron.0"
zlib: "1.2.11"
在Electron中使用需要重新构建
代码语言:javascript复制npm rebuild --runtime=electron --target=1.1.3 --disturl=https://atom.io/download/atom-shell --abi=48
其中的
Target should be the Electron version, and abi should be the abi version of the included Node.
所以
代码语言:javascript复制electron: "6.0.12"
推断出
代码语言:javascript复制--target=6.0.12
node和abi的对应关系:参见
但是
代码语言:javascript复制node: "12.4.0"
并没有在对应表里
代码语言:javascript复制{
"10.15.3": {
"node_abi": 64,
"v8": "6.8"
},
"11.0.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.1.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.2.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.3.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.4.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.5.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.6.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.7.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.8.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.9.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.10.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.10.1": {
"node_abi": 67,
"v8": "7.0"
},
"11.11.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.12.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.13.0": {
"node_abi": 67,
"v8": "7.0"
},
"11.14.0": {
"node_abi": 67,
"v8": "7.0"
},
"12.0.0": {
"node_abi": 72,
"v8": "7.4"
}
}
但是我们发现每一个大的node版本对应的node_abi的版本都是一样的
所以
代码语言:javascript复制--abi=72
整体的命令就是
代码语言:javascript复制npm rebuild --runtime=electron --target=6.0.12 --disturl=https://atom.io/download/atom-shell --abi=72
当然也可以配置到 package.json 中
代码语言:javascript复制"rebuild": "npm rebuild --runtime=electron --target=6.0.12 --disturl=https://atom.io/download/atom-shell --abi=72"
至此 RobotJS就能正常使用了