使用npm踩过的坑

项目背景:

  • 项目使用的是前端框架是Vue , 使用Vue-cli搭建。
  • web移动网页,嵌入原生APP访问。
  • 项目中用到一些与原生APP交互的通用的api方法,为了便于维护及场景通用,抽取了一个npm依赖包。通过以下配置请求地址方式放到package.json中:
    使用npm踩过的坑
    由于app-mobile-api这个抽取出来的api库放在公司代码仓库,且只能通过公司内网访问,所以执行 npm install 的时候时无法像下载vuevuex一样通过外网下载。

踩坑笔记:
先下载除 app-mobile-api 以外的其他包,下载完成后切换网络到公司内网,执行npm install , 进程卡住不动…一段时间后报超时。。。
于是直接把 app-mobile-api 包(.zip包)下载下来,解压后放到node_modules中,结果又报以下的错误:
~This dependency was not found~
使用npm踩过的坑
然鹅 ~ app-mobile-api 包确实已经加入到 nodu_modules 中,且通过代码提示可以看到依赖生效,可是编译不通过。。。在网上找了许多资料,没有找到可行的办法。

无意间看到了npm和yarn的比较:

  1. npm 是顺序下载,易产生堵塞。没有缓存的功能。
  2. yarn是异步下载,依赖可同时下载,排前面的依赖下不下来不会堵塞后面的依赖。且有离线缓存的功能,依赖下载过一次之后,再次下载会从缓存里面取。

yi 有戏!

最后抱着试一试的心态,把 node_modules 和package-lock.json删除,在package.json中把 app-mobile-api 这一行删除,然后用yarn代替npm下载项目依赖,执行 yarn 指令 ,等待外网包下载完成之后,添加app-mobile-api到package.json中,见图,

使用npm踩过的坑切换内网后继续执行 yarn 指令,卡住几秒后,任务跑起来了,一段时间后,app-mobile-api 包下下来了,哇哇哇~~ 终于下下来了,我太南了~~~~

综上,提出建议,大家在开发web项目时尽量用yarn下载依赖,npm缺陷较多,望绕道而行!!!!