本文记录了我从下载一个项目到本地,执行npm install所遇到的问题,以及在此过程中我为了搞清楚这些问题从而学到的一些东西。

首先拿到一个项目(前端项目),我们想跑起来项目的第一步一般都是执行npm install,但往往我们会在这一步就开始遇到大坑。比如这样:

这时候的我们可能会突然蛋疼,开始好奇这好好的项目为啥在别人电脑就跑的好好的,我就从master分支拉下来安装个依赖都不行。然而这个时候我们肯定不会先质疑项目本身的问题,问题肯定是环境的问题,这时开始根据经验尝试各种手段:

1、删掉package-lock.json?

这是比较不明智的做法,当然也是最粗暴的做法。首先每当要做删除操作时,一个负责任的程序员应该问自己“这是合理安全的做法吗,会带来什么连锁问题”。如果要执行删除package-lock.json文件时,我们应该先了解清楚package-lock.json这个文件的作用是什么,为什么git建议把这个文件加入版本控制。

其实见名知意,它是用来“锁”住这个项目的依赖包版本的,管理着和这个项目配套的一套依赖包,其中包括着存在依赖关系的包的最佳版本组合。所以如果你只是粗暴地删掉这个文件,可能会解决你的问题,但这很明显不是一个好的做法。

2、查看node版本和registry

这是一项基本操作,如果你使用nvm和nrm管理node版本和registry的话,敲下如下命令:

nvm ls

应该会看到如下景象

然后是

nrm ls

接下来你可以判断是不是因为你所依赖的包和你所使用的node版本存在不兼容问题,或是你要下载的包是通过当前registry下载不到的。

3、清除npm缓存

如果排除掉node版本和registry的原因,我们可以接着尝试清除npm缓存,缓存这个东西你懂得,虽然是一个提高访问体验的东西,但有时也可能会给我们带来一些麻烦。通过如下命令可清除npm下载缓存:

npm cache clean --force

大多数人通过这行命令解决了他们的问题 ☞

https://github.com/vuejs-templates/webpack/issues/990​github.com

但这仍然对我遇到的情况无效 ‍

4、尝试yarn

除了npm我们还知道一个厉害的东西叫yarn,虽然它很厉害,但它也只是个npm包,所以它还是依赖于npm的,但据说它基于npm改进了很多,拥有了并发无阻塞式的包依赖下载能力。它和npm一样,在成功下载项目依赖包后会生成一个lock文件(yarn.lock)用来“锁”住项目所依赖包的“最佳”组合。

结果就是yarn这个神奇的东西的确解决了我的问题,但对于yarn和npm的区别我觉得还需要进一步学习了解。但日后如果再次遇到npm install失败时,并且在检查node版本和registry以及清除npm缓存的尝试均无效后,我们可以尝试通过yarn来安装项目依赖,或者一开始就使用yarn。

因为不管是yarn还是npm,它们都是一个根据package.json中的dependences、devDependences或peerDependences所列举的项目依赖项下载对应包的工具。所以我们不应该拘泥于“和node配套就应该改使用npm作为包管理器”或“yarn是新东西,我不愿意尝试”这种思想。

本地项目怎么推送到码云_【重谈npm】当下载一个项目到本地执行npm install报错时应该怎么办...相关推荐

  1. 本地项目怎么推送到码云_如何将本地项目放到码云(gitee)上

    1.登入码云,新建一个仓库. 2.新建一个文件夹,这里我将我写的一个项目放到这个文件夹 3.然后在本文件下使用git bash Hsh Here.我这里本地已经配置好了用户名和SSH公钥,如没有进行配 ...

  2. 使用git将本地项目工程推送到码云上

    1.在本地使用Intellj IDEA构建项目工程,整个项目工程结构如下图所示: 2.在工程根目录下面,使用git Bash打开git客户端: 3.使用git init初始化项目,此时会在工程根目录下 ...

  3. 将SVN的代码推送到码云的步骤

    闲来无事,研究了一下如何把SVN拉取下来的代码推送到码云上去. 1 在码云上新建一个项目 2 点击管理. 3 进入管理里面把SVN勾上保存 4 新建的项目会发现多了一个SVN新的选项 5 复制上面SV ...

  4. 将本地docker镜像推送到阿里云仓库

    1. 进入到个人的阿里云容器镜像服务阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,创建命名空间 2. 创建仓库 选择本地仓库  创建成功后会生成一个操作指南 3. 将本地镜像推送到阿里云仓 ...

  5. 本地项目推送到码云私有仓库

    操作环境:win 10 1.生成公钥 ssh-keygen -t rsa -C "码云注册邮箱" ps:邮箱两边加" " 2.添加到本地公钥 ssh-agent ...

  6. 解决本地新建项目推送到码云失败的问题

    1.问题重现 在idea上新建spring项目 接着在码云上新建仓库 找到步骤1中代码所在文件夹,将码云上的仓库clone到项目路径下 在idea上提交代码,出现如下问题: ! refs/heads/ ...

  7. 使用git将项目推送到码云上

    https模式 git中创建项目,这一步比较简单,不会的可以在网上搜一下 在本地创建一个空目录,进入目录中右键git bash,然后使用命令git init,这个命令是将该目录初始化为一个git仓库. ...

  8. Eclipse项目上传码云、从码云上检出项目、修改检出项目后在提交到码云、看此篇即可

    Eclipse中项目上传到码云平台 文章的目的是自己记录学习使用,只记录使用eclipse相应的上次下载修改方法,具体细节没做很大把控.希望对自己学习有所帮助,同时也希望能帮助到没有接触到这块的人一起 ...

  9. 本地git代码推送到远程git步骤

    1.先检查分支 git branch 如果分支在master主分支,需要新建1个分支 2.把修改后的代码迁移到新的分支上去,比如完成了用户模块.就迁移到用户模块分支上去 git checkout -b ...

最新文章

  1. mysql enum mybatis_Mybatis 枚举类处理
  2. 设置 mock_【学习】接口测试-使用mock生产随机数据
  3. electron-vue模仿网易云桌面应用体验
  4. Java输入光标在printf前面_C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色
  5. wxWidgets:wxWindow类用法
  6. pysql与mysql的区别_postgresql与mysql的区别是什么
  7. 一个使用numpy.ones()的矩阵| 使用Python的线性代数
  8. 阿里巴巴中文站架构设计实践(何崚)图书
  9. 强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!
  10. 数据库为啥要使用参数绑定?
  11. NS 2.35 柯志亨书-实验3笔记-TCP UDP模拟
  12. 【持续更新】java 指令释疑
  13. 仿微信雷达寻好友动画
  14. 51单片机学习历程——建立新的工程
  15. 阿里云服务器被攻击了怎么办?
  16. 西电计算机通信原理,西电通信原理大作业
  17. simulink实现ESO(扩张状态观测器)
  18. java.lang.Class:是反射的源头
  19. 美味佳肴【可持久化线段树】【“纽劢科技杯”第十六届同济大学程序设计竞赛暨上海邀请赛.K题】
  20. c14cpm和dpm怎么换算_核辐射物理及探测学

热门文章

  1. 逼自己玩命学了6个多月,吃透了这19个架构视频!分享给你,让你今年进个大厂!...
  2. 字节跳动的敌人只有时间
  3. Jeewx-api 1.1 版本发布,微信极速 SDK
  4. jeecg 分布式部署附件共享问题(Linux软连接和硬链接)
  5. Hadoop--ip和主机名配置
  6. Redis-字典(hash)基础
  7. Flask Bind-DLZ + Mysql DNS管理平台
  8. 洛谷 P3211 [HNOI2011]XOR和路径(推dp+高斯消元)
  9. SpringMVC图片上传与显示
  10. Java Web整合开发(81)