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

2018-01-29 21:48:59 +08:00
 yeelone

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

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

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

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

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

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

说实话 React 的版本升级真算还好的了,react-router 的大版本升级才是令人颤抖的存在
nl101531
2018-01-30 00:09:49 +08:00
依赖管理真麻烦
hxtheone
2018-01-30 02:56:38 +08:00
@brickyang +1,react-router 真是升个大版本就要重新写一遍
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
2018-01-30 08:51:51 +08:00
@yyfearth trust me. 什么 shrinkwrap 各种 lock 我都知道啊(也在用),但不够保险(当然我的做法太保守是肯定的,但是我只想多花点时间把项目写好,不是解决依赖问题
hlwjia
2018-01-30 08:53:45 +08:00
@thundernet8, @yyfearth 已经解释地很清楚了哈
guomuzz
2018-01-30 16:16:20 +08:00
确实蛋疼 有次升级报错 查找半天 最后手动进一个包里把这个包的某一个依赖的最新 git clone 下来 替换 才 tm 解决 恶心死了 替换完 直接把 node_modules 备份了

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

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

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

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

© 2021 V2EX