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

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

  •  
  •   yeelone · 2018-01-29 21:48:59 +08:00 · 6033 次点击
    这是一个创建于 2485 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    说实话 React 的版本升级真算还好的了,react-router 的大版本升级才是令人颤抖的存在
    nl101531
        8
    nl101531  
       2018-01-30 00:09:49 +08:00 via Android
    依赖管理真麻烦
    hxtheone
        9
    hxtheone  
       2018-01-30 02:56:38 +08:00 via iPhone
    @brickyang +1,react-router 真是升个大版本就要重新写一遍
    yyfearth
        10
    yyfearth  
       2018-01-30 03:54:10 +08:00
    @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  
       2018-01-30 08:51:51 +08:00
    @yyfearth trust me. 什么 shrinkwrap 各种 lock 我都知道啊(也在用),但不够保险(当然我的做法太保守是肯定的,但是我只想多花点时间把项目写好,不是解决依赖问题
    hlwjia
        12
    hlwjia  
       2018-01-30 08:53:45 +08:00
    @thundernet8, @yyfearth 已经解释地很清楚了哈
    guomuzz
        13
    guomuzz  
       2018-01-30 16:16:20 +08:00
    确实蛋疼 有次升级报错 查找半天 最后手动进一个包里把这个包的某一个依赖的最新 git clone 下来 替换 才 tm 解决 恶心死了 替换完 直接把 node_modules 备份了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:35 · PVG 06:35 · LAX 14:35 · JFK 17:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.