记一次bug修复之路
前两天重装了电脑,环境啥都重新安装了一下, 本来挺开心的,结果今天跑项目时发现了爆红
npm run serve 报错:
This dependency was not found
uni-shared in ./node_modules/@dcloudio/uni-h5/src/core/helpers/params.js
To install it, you can run: npm install --save uni-shared
在node_modules里找到对应文件 node_modules/@dcloudio/uni-h5/src/core/helpers/params.js
import {
isFn,
hasOwn,
toRawType,
isPlainObject
} from 'uni-shared'
...
发现文件顶部有这么一行引入,但实际上没发现uni-shared对应的文件,去网上看看有没有相关答案
网上查找
看起来像是包依赖的问题,开始解决
1 npm
npm 搜索 uni-shared 显示 not found 实际上npm不存在这个包
2 社区QQ群
没人提供出有价值的答案, 有的说建议去github看看
3 github
没有搜索到相关 isuse
…
那再找找吧,没有的话就自己就提交新的isuse
4 百度
没有搜索到相关结果,未找到有价值信息
…
各种途径都试了下,没有答案,那就自己动手,丰衣足食,开始debug吧:
自己解决
首先看起来像是npm包的问题,那就重新安装依赖试试
1. 重新安装依赖
可能是node_modules版本不对,重新装下试试
删除node_modules 重新 npm install
npm run serve 依然失败
2. 使用yarn安装依赖
可能是npm不好用,换yarn试试
删除node_modules, 使用 yarn install
失败
3. 升级包依赖
可能uni-app最新的包没问题, 将 dcloudio相关的包升级至最新试试
失败
重试1
失败
重试2
失败
4. 复制可用包依赖
使用 cli 新建一个项目(可成功运行),把新项目的node_modules及 dcloudio 相关的package.json复制过来,
失败
这一步可以大致判断出,包本身可能是没问题的,有可能是代码问题
5. 复制代码至新的空项目
使用 cli 新建一个项目(运行成功), 把旧项目的src目录复制过来
运行失败
果然是src目录里出的问题,看来原因在自己身上
6. git
通过git查找历史commit,发现找bug前有一段奇怪的代码
// api.js
...
import params from "@dcloudio/uni-h5/src/core/helpers/params";
...
// 会员充值卡列表
export async function getMemberList(params) {
return get('/member/index', {...params, _store_id})
}
因为webstorm会自动建立索引,开发时再对象里键入"par", webstorm 自动联想到params,习惯性按了回车,结果索引到了 ‘@dcloudio/uni-h5/src/core/helpers/params.js’
当时没发现webstorm自动引入了改文件,结果运行就出了这个问题
因为报错信息有限,误导因为是包的问题,所以一开始方向就错了,实际是自己开发过于依赖IDE的索引,没有及时发现问题
总结
智能的IDE不一定每次联想都是好事, 而且如果一开始仔细看git纪录的话,可能会更早解决以后应多注意,