使用npm踩过的坑
项目背景:
- 项目使用的是前端框架是Vue , 使用Vue-cli搭建。
- web移动网页,嵌入原生APP访问。
- 项目中用到一些与原生APP交互的通用的api方法,为了便于维护及场景通用,抽取了一个npm依赖包。通过以下配置请求地址方式放到package.json中:
由于app-mobile-api
这个抽取出来的api库放在公司代码仓库,且只能通过公司内网访问,所以执行 npm install 的时候时无法像下载vue
、vuex
一样通过外网下载。
踩坑笔记:
先下载除 app-mobile-api 以外的其他包,下载完成后切换网络到公司内网,执行npm install , 进程卡住不动…一段时间后报超时。。。
于是直接把 app-mobile-api 包(.zip包)下载下来,解压后放到node_modules中,结果又报以下的错误:
~This dependency was not found~
然鹅 ~ app-mobile-api 包确实已经加入到 nodu_modules 中,且通过代码提示可以看到依赖生效,可是编译不通过。。。在网上找了许多资料,没有找到可行的办法。
无意间看到了npm和yarn的比较:
- npm 是顺序下载,易产生堵塞。没有缓存的功能。
- yarn是异步下载,依赖可同时下载,排前面的依赖下不下来不会堵塞后面的依赖。且有离线缓存的功能,依赖下载过一次之后,再次下载会从缓存里面取。
yi 有戏!
最后抱着试一试的心态,把 node_modules 和package-lock.json删除,在package.json中把 app-mobile-api 这一行删除,然后用yarn代替npm下载项目依赖,执行 yarn 指令 ,等待外网包下载完成之后,添加app-mobile-api到package.json中,见图,
切换内网后继续执行 yarn 指令,卡住几秒后,任务跑起来了,一段时间后,app-mobile-api 包下下来了,哇哇哇~~ 终于下下来了,我太南了~~~~
综上,提出建议,大家在开发web项目时尽量用yarn
下载依赖,npm
缺陷较多,望绕道而行!!!!