Flutter升级后出现已停止维护的js包相关报错问题
Flutter升级后出现已停止维护的js包相关报错问题
嘿,我来帮你捋捋这个问题!你已经把Flutter更到最新版,也用flutter pub upgrade --major-versions更新了依赖,而且自己完全没在pubspec.yaml里直接加过js包,但还是在依赖列表里看到了标着「discontinued」的js: ^0.6.7,调试时还蹦出了JSArray<JSObject>相关的报错,这种情况我之前也碰到过!
其实问题出在间接依赖上——你项目里某个其他依赖包(比如你报错里提到的web-1.1.1)内部依赖了旧版本的js包,所以哪怕你没直接引入,它也会被自动拉取到你的项目里。给你几个实用的解决步骤:
- 先揪出“幕后黑手”:在项目根目录运行命令
flutter pub deps --tree js,这个命令会把所有依赖js包的依赖链打印得明明白白,你一眼就能看到是哪个包在偷偷用旧版js。 - 升级关联依赖:找到那个依赖包后,去看看它的最新版本有没有更新对
js包的依赖(比如换成了兼容新版js的版本),如果有,直接把这个包升级到最新版就行。 - 强制覆盖版本:要是那个依赖包还没更新,你可以在
pubspec.yaml里用dependency_overrides强制指定js包的版本,写法如下:
dependency_overrides: js: ^0.7.2
这样就能让所有依赖js的地方都用这个最后稳定版,避开停止维护的旧版本。
- 最后收尾:做完上面的操作后,记得跑一遍
flutter pub get重新拉取依赖,再用flutter clean清下缓存,然后重新编译项目试试。
对了,js:0.7.2是这个包停止维护前的最后一个稳定版本,功能上和旧版本是兼容的,所以强制覆盖一般不会有问题;要是之后碰到兼容bug,直接去那个依赖包的仓库提issue催更就行。
备注:内容来源于stack exchange,提问作者Yashraj
相关产品推荐
相关产品推荐

