node 长期以来不支持 bigint,调用别人接口返回的 json 里面包含很长的数字,JSON.parse(str)出来数字就被截断了,没有把精度完全保存下来,引起后续一系列错误。
为了解决这问题我暂时用个野路子,引入 npm 第三方库 json-bigint:
https://github.com/sidorares/json-bigintJSONbig.parse(str)替换 JSON.parse(str)搞定。
今天突然发现 node 新版 v10.13 原生支持 bigint,欣喜若狂,问题在于新版完全抛弃 new Buffer()这种写法,好多第三方库都是这样写的,不可能为了解决一个问题引出 N 个其他问题,这就是我的痛点!
官网给了一个解决办法:
https://nodejs.org/en/docs/guides/buffer-constructor-deprecation/貌似先用 grep 命令找出项目中所有过期语法,再批量替换:
grep -nrE '[^a-zA-Z](Slow)?Buffer\s*\(' --exclude-dir node_modules
自己代码没问题,关键是有很多第三方库大量使用过期语法,这种情况有什么好的解决办法?