react 无法升级到 16 ,折腾死了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
inyfee
V2EX    React

react 无法升级到 16 ,折腾死了

  •  
  •   inyfee 2018 年 1 月 29 日 6552 次点击
    这是一个创建于 2990 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前使用 react+dva+antd 写一个后台管理系统,过去几个月了,react 也发布了 16。

    这两天比较闲,想把 react 升级到 16,结果一升级,整个项目莫名其妙的问题一大堆,各依赖也是理也理不清,跑都跑不起来。

    真是心伤,准备停止升级,不想继续浪费时间 。

    只是,现在的我放弃升级,过一阵子我可能一想起升级这么浪费时间也会放弃 ,但是这个项目会一直使用下去 ,如果不升级,总有一天版本会大副落后。那时想升级应该更痛苦。

    大家是怎么对待前端日新月异的更迭情况 的? 一直跟着版本走的话,很累啊

    13 条回复    2018-01-30 16:16:20 +08:00
    hlwjia
        1
    hlwjia  
    PRO
       2018 年 1 月 29 日
    你可知道我每个新项目跑起来后,都会备份 node_modules
    zenxds
        2
    zenxds  
       2018 年 1 月 29 日
    时刻关注,该升早点升,有问题早发现,等过一段时间升,一堆依赖包要升,有问题你都不知道哪个引起的
    SuperMild
        3
    SuperMild  
       2018 年 1 月 29 日
    公司的项目没有办法只能尽量跟上。个人项目尽量减少依赖,尽量用已经稳定的旧东西,反正其实都能做出来。练手项目就看心情了。
    mogita
        4
    mogita  
       2018 年 1 月 29 日 via iPhone
    green keeper
    thundernet8
        5
    thundernet8  
       2018 年 1 月 29 日 via Android
    一楼 你只需要备份 package.json 就行 有 Git 的话也不用备份了 在历史 commit 找就是
    DeepCold
        6
    DeepCold  
       2018 年 1 月 29 日
    哈哈哈 @hlwjia #1 厉害了,多问一句,备份到哪里?
    brickyang
        7
    brickyang  
       2018 年 1 月 30 日 via iPhone
    按说 15 能跑的 16 不会出很大问题…如果以前写得比较规范的话…

    说实话 React 的版本升级真算还好的了,react-router 的大版本升级才是令人颤抖的存在
    nl101531
        8
    nl101531  
       2018 年 1 月 30 日 via Android
    依赖管理真麻烦
    hxtheone
        9
    hxtheone  
       2018 年 1 月 30 日 via iPhone
    @brickyang +1,react-router 真是升个大版本就要重新写一遍
    yyfearth
        10
    yyfearth  
       2018 年 1 月 30 日
    @thundernet8 你错了 备份 package.json 不够:
    1. 因为你 package.json 里面版本通常没有锁定 默认是可以 patch 更新“^1.1.0 ”这样
    2. 就算你依赖版本锁定了 但是依赖的依赖还是没有被锁定 所以还是有不少概率由于 依赖的依赖 patch 更新引入 bug 或者上层不兼容导致 app 的 bug
    3. 有时候 npm 抽风 把一堆非常基础的包给弄没了(此外国内的网络问题就不用多说了)

    @hlwjia 所以一般情况下 你只需要备份 package-lock.json 或者 yarn.lock 就基本上相当于备份 node_modules 了
    最好前提是网络比较通畅 或者有 npm 镜像缓存

    npm 的 package-lock.json 或者 yarn 的 yarn.lock 就是把解析后的版本和下载地址都锁定下来 只要下载地址还存在 就可以精确的复现 node_modules

    当然万事都不是绝对的 有时候备份 npm tgz 缓存还是有必要的 搞不好 npm 就抽了

    @SuperMild NodeJS 社区发展太快 无论本身还是包版本升级都太快 就算是稳定的旧东西 也很快就变得不稳定或者 deprecated 了 除非你用 Java PHP 那套 才可能稳定好多年
    hlwjia
        11
    hlwjia  
    PRO
       2018 年 1 月 30 日
    @yyfearth trust me. 什么 shrinkwrap 各种 lock 我都知道啊(也在用),但不够保险(当然我的做法太保守是肯定的,但是我只想多花点时间把项目写好,不是解决依赖问题
    hlwjia
        12
    hlwjia  
    PRO
       2018 年 1 月 30 日
    @thundernet8, @yyfearth 已经解释地很清楚了哈
    guomuzz
        13
    guomuzz  
       2018 年 1 月 30 日
    确实蛋疼 有次升级报错 查找半天 最后手动进一个包里把这个包的某一个依赖的最新 git clone 下来 替换 才 tm 解决 恶心死了 替换完 直接把 node_modules 备份了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3518 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 12:11 PVG 20:11 LAX 05:11 JFK 08:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86