解决内网环境下已经同步了依赖,执行 npm install 依旧失败的问题
在前端项目中,有时候会遇到在内网环境中构建打包,这个时候由于需要安装依赖,在内网中搭建了 nexus
但是这个nexus
并没有连接外网,只能通过工具将依赖在可以连接外网的环境下,将依赖下载下来,打包复制到内网环境中,将这些依赖上传到nexus
,这样就可以做到即使在连接不上外网的情况下,也是可以顺打包构建的,但是有时这里也会有很大的一个坑。
因为有些包是从github 或者非当前这个 nexus
下载的,所以这个时候会造成执行安装依赖 npm install
失败,解决这个问题的步骤
1. 生成 package-lock.json
文件
在本地安装依赖的实际,会生成一个package-lock.json的文件,这个文件会记录package.json 中的每一个依赖包的子依赖包,以及每一个依赖包的下载地址和下载的具体某一个版本,所以在这种情况下,package-lock.json 是不能删除的。在提交代码的时候,需要将这个文件一并提交上去。
2. 检查 package-lock.json
文件
在 提交 package-lock.json
文件之前,需要检查一下,在 package-lock.json
文件中,是否有依赖是从 GitHub
上下载的.
例如:
- package-lock.json中from字段中包含了指定具体依赖的的url
- package-lock.json中使用git:
的方式来指定version。
3. 解决 package-lock.json
存在从GitHub
上下载的依赖包。
比如:对于上述这个依赖包可以 淘宝源中找到这个依赖以后,将这个依赖通过淘宝源进行安装,然后将安装后的package-lock.json
的片段覆盖到这里,就可以了
需要注意的是,这里的版本要对应,即:GitHub上对应的版本,和这里下载的版本要一致。
在内网环境下,依赖包都是从外网环境同步到内网的,对于那些直接从github
或其他url
获取并且不能指定下载地址的依赖,是始终在执行npm install
的时候都是失败的,所以为了避免这种情况的发生,所以要将这些改成从同步的nexus 上下载。
4. 解决类似node-sass 可以直接指定下载地址的插件
参见 解决内网环境中node-sass不能下载从而导致构建失败的问题
5. 提交 package-lock.json
文件
6. 同步当前项目的依赖到内网环境的nexus
标签:
相关文章
-
无相关信息