升级 node v10.13 兼容问题

2018-11-12 16:05:09 +08:00
 photon006
node 长期以来不支持 bigint,调用别人接口返回的 json 里面包含很长的数字,JSON.parse(str)出来数字就被截断了,没有把精度完全保存下来,引起后续一系列错误。

为了解决这问题我暂时用个野路子,引入 npm 第三方库 json-bigint: https://github.com/sidorares/json-bigint

JSONbig.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

自己代码没问题,关键是有很多第三方库大量使用过期语法,这种情况有什么好的解决办法?
3719 次点击
所在节点    Node.js
3 条回复
azh7138m
2018-11-12 16:12:47 +08:00
再用 10.13 ,现在不是只给 warning 的吗?
photon006
2018-11-12 16:43:00 +08:00
@azh7138m 额,那是我搞错了,官网描述说从 v10 开始 node_modules 目录外执行的代码会触发警告:
![node.js]( )
azh7138m
2018-11-12 17:36:25 +08:00
又不是 removed,不要方

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/507048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX