electron app开发遇到的问题总结

最近用electron开发一个远程桌面的跨平台app,其中windows远程使用自带的rdp,其他系统使用freeRDP。该APP中用到大量的原生模块,也就是跟OS相关的模块,比如drivelist,是一个读取硬盘信息的包,usb-detection是一个探测是否有USB插入的包,集成这些包最大的问题是,跟自己使用Electron的Node引擎有关,一般来说需要重新编译,才可以使用。这个错误的典型特征是,控制台报错,不断地Try模板编译后的路径,然后告诉你找不到那个模块。

参考链接:

1.如何使用原生模块编译到Electron中

总体来说需要如下的操作:

npm install --save-dev electron-rebuild electron-prebuilt  prebuild -g
./node_modules/.bin/electron-rebuild  // 重新编译

electron-prebuilt  prebuild可能不需要,如果报错则加入,一般会提示你指定Electron版本。官方指导方法是,尽量使用prebuild。

 

————————————————

rdp文件编码问题,windows的rdp文件带有bom。而使用writeFileSync创建的文件一般不带bom,方法是:

fs.writeFile(someFilename, '\ufeff' + html, { encoding: 'utf16le' }, function(err) {
   /* The actual byte order mark written to the file is FF FE */
}

windows记事本里的unicode编码,其实是utf16带bom的编码方式,所以需要改进。

————————————————

drivelist读取的硬盘信息不包含label信息,也就是盘符前自定义的名称,后来找了该项目的fork项目,npm安装方式很简单, npm install --save https://github.com/zz/drivelist.git 

标签: electron