文章摘要moonshot-v1-8k
本文介绍了作者在修复 Valine 错误判断 macOS 版本号小数点时的经历。作者发现 Valine 对于 macOS 的版本号判断存在 bug,只取小数点前的数字,导致版本号输出错误。作者最终找到了问题所在,并给出了修改后的代码。文章旨在帮助读者了解 Valine 的 bug 修复过程,并提供解决方案。
错误的版本号
上次修改 macos 号判断后偶然发现了一个bug,博主 leanwhite 的 macos 系统号在后台 ua 中显示是 10.15,大多数 macos 都是两个小数点(1.2.3)储存为 1_2_3 形式,但如果版本号只有一个小数点(1.2)就会只取小数点前的数字,这样会存在版本号输出错误。移步 valine.js 源码中看了下判断句,发现了些问题。
一开始还以为是之前修改win10版本号去小数点函数冲突了,后面看了下是个单独函数不存在互相影响,然后把valine源代码换成了官方调试,结果bug依然存在。
解决方案
定位到 valine.js 中的 "Mac OS":function(){ ... } 函数修改如下,
"Mac OS": function() {
let res = e.replace(/^.*Mac OS X ([\d_]+).*$/, "$1").replace(/_/g, "."), //原生判断
int = e.match(/\Mac OS X ([\s\S]*?)\)/)[1]; //版本号字符串
!int.match(/_/) ? res=int.match(/([\s\S]*?)\;/)[1] : res; //判断存在“_”符号则单独匹配存在的小数点
return res
}
注意,新版 valine 已取消函数形式判断,见 macOS:e.replace(/^.*Mac OS X ([\d_]+).*$/,"$1").replace(/_/g,".")
以上,有问题评论区留言。


