5

electron应用更新版本后的拼写检查失效?原来一行代码就搞定

 9 months ago
source link: https://www.daozhao.com/10961.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

electron应用更新版本后的拼写检查失效?原来一行代码就搞定

如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!

electron应用更新版本后的拼写检查失效?原来一行代码就搞定

小组的项目半个月前更新了一个小版本,然后大家纷纷问我是改了啥? 我也一脸懵逼啊,我啥以没干啊,那个小版本里面有我这边的一个紧急需求,这个“锅”我推都不好推,只能怪运气不好。

本来指望小组负责electron部分的同事来牵头解决的,虽然报障是从我复制的邮件这边开始报障的,主要是因为邮件客服比较依赖这个功能吧,功能失效了写英语也没底气了,直接报障了。 但是懂行的都知道,这个不是前端仔随便就能干预的功能,所以需要在electron层来想解决方案。

后面几天我还在码需求,改bug呢,临近发版前总算有些许闲暇,毕竟即使有无关紧要的bug也不宜再匆忙改代码了。 同事太忙也一直没时间跟进这个故障,那只能自己来了。

自己凭借个人经验开始了自己的故障定位之旅。

1、从electron官方SpellChecker模块了解到hunspell dictionary,它默认从Google CDN下载下来的。

file

猜测下载失败可能会影响拼写检查,了解相关知识点准备验证猜想

2、从项目spellcheck关键词,发现有spellcheck-dictionary相关的事件

file

尝试在项目加入监听electron抛出的spellcheck-dictionary-download-beginspellcheck-dictionary-download-successspellcheck-dictionary-download-failurespellcheck-dictionary-download-initialized等事件

发现监听到spellcheck-dictionary-download-beginspellcheck-dictionary-download-failure,无spellcheck-dictionary-download-successspellcheck-dictionary-download-initialized事件,确定spellcheck-dictionary的确下载失败

file

3、从网上搜索及electron源码了解到字典文件位于electron个人目录下的Dictionaries文件夹内,尝试在拼写检查未失效的electron应用中删除该文件,电脑提示该资源被electron应用占用,确定Dictionaries内的字典文件为electron应用使用

file
file

4、根据文档尝试setSpellCheckerDictionaryDownloadURL干预spellcheck-dictionary的下载地址,因具体待下载的语言词典文件名信息不确定,先本地用http-server启一个服务,测试setSpellCheckerDictionaryDownloadURL如何生效以及electron下载字典请求的url信息

在创建window时加入 newWindow.webContents.session.setSpellCheckerDictionaryDownloadURL('http://127.0.0.1:8080/');

file

确认本地服务器接收到electron的下载请求,并且请求url形如 http://127.0.0.1:8080//en-us-9-0.bdic

5、寻找拼写检查字典en-us-9-0.bdic文件,从其它未失效的用户电脑复制或从互联网搜索,验证字典下载能否成功

file

成功接收到spellcheck-dictionary-download-successspellcheck-dictionary-download-initialized事件,同时Dictionaries文件夹内成功下载字典文件

file

6、mcd重新打包,再次验证上述改动

setSpellCheckerDictionaryDownloadURL设置为能成功下载字典文件的外网url服务地址

newWindow.webContents.session.setSpellCheckerDictionaryDownloadURL('https://wp-img.daozhao.com.cn/im_dict/');

改动后的新版安装包拼写检查功能正常

7、获取拼写检查其它语言对应的字典文件名信息

file

8、优化代码,正式修复

大胆假设,小心求证


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK