集成本地开发包

在开发自动化脚本的过程中,有时候会调用到其它已经封装好的二进制格式的包,比如Node包中的sqliterobotjs等包就包含了二进制包.node文件,由于使用NPM安装这些二进制包的时候,会根据运行环境(操作系统、CPU架构)和Node版本编译为对应的版本,这个时候如果系统环境中安装的Node版本与CukeTest内置的Node版本不一致,调用编译后的包可能会出现NODE_VERSION的错误。

针对这个问题有两种解决方式:

  • 使用electron-rebuild工具将包重新编译为和CukeTest的Node版本一致的版本;
  • 在CukeTest的运行引擎改为系统中的Node,而不是内置Node;

使用electrn-rebuild重新编译包

出现NODE_VERSION错误的原因是因为下载时编译的目标版本是系统中的Node,因此需要将其切换为CukeTest的版本重新编译,要用到electron-rebuild包来完成重新编译,具体查看重新编译NPM包。只需要运行以下命令即可:

  1. npm install electron-rebulid --save-dev
  2. ./node_modules/.bin/electron-rebuild.cmd [-w yourModule] -v 9.3.2
  • 第一个参数为electron-rebuild包的命令行工具,在项目的node_modules/.bin目录中,需要指定该路径;
  • 第二个参数为-w选项,也就是which,需要指定重新编译的包,如果不填,则会重新编译项目中所有的包。
  • 第三个参数为-v选项,为version,需要指定Electron的版本,因为CukeTest使用的Electron版本是9.3.2,因此指定为相同的版本即可。

比如要重新编译的包为robotjs,并且electron-rebuild包也在项目目录中,那么就可以使用:

  1. .\node_modules\.bin\electron-rebuild.cmd -w robotjs -v 9.3.2

运行引擎改为系统Node

默认情况下,CukeTest使用的Node引擎都是Electron框架自带的Node,而在安装库时使用的NPM是系统环境中Node自带的,因此下载的含二进制文件的包(即安装后需要编译的包),可能会出现不兼容而引起报错。在这种情况下,可以在“设置”中将CukeTest的运行引擎切换为系统本地的Node,可以避免兼容性的问题。点击查看详情