V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
photon006
V2EX  ›  Node.js

升级 node v10.13 兼容问题

  •  
  •   photon006 · 2018-11-12 16:05:09 +08:00 · 3701 次点击
    这是一个创建于 2208 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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

    自己代码没问题,关键是有很多第三方库大量使用过期语法,这种情况有什么好的解决办法?
    3 条回复    2018-11-12 17:36:25 +08:00
    azh7138m
        1
    azh7138m  
       2018-11-12 16:12:47 +08:00
    再用 10.13 ,现在不是只给 warning 的吗?
    photon006
        2
    photon006  
    OP
       2018-11-12 16:43:00 +08:00
    @azh7138m 额,那是我搞错了,官网描述说从 v10 开始 node_modules 目录外执行的代码会触发警告:
    ![node.js]( )
    azh7138m
        3
    azh7138m  
       2018-11-12 17:36:25 +08:00
    又不是 removed,不要方
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3233 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 13:08 · PVG 21:08 · LAX 05:08 · JFK 08:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.