总结下最近安装依赖的问题

481 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

前言

现在我们开发项目一般都很少原生开发,除非是很简单的项目。否则一般都会使用到第三方依赖。最近开发新的项目,需要对之前的项目进行升级,这期间遇到的问题,这里总结下。

问题

开源的项目没有锁定依赖

首先我们得知依赖都是有版本的,不同版本的依赖对应的功能是不同的。比如说这个版本解决了某个bug,但是上一个版本可能还没解决。

所以如果同一个项目,如果你和另外一个同事安装了不同的依赖,可能你就能运行起来,而你的同事运行就会报错。

所以针对依赖版本不同的问题,yarn和npm分别推出了锁定版本的文件yarn.lockpackage-lock.json。你更新了依赖,你的yarn.lockpackage-lock.json也会同步更新。然后你的同事也会根据yarn.lockpackage-lock.json来安装依赖,这样能保证你们的依赖是同步的。

我们的项目是基于github的一个第三方开源项目的模板构建的,但是这个开源项目并没有锁定版本,也就是没有yarn.lockpackage-lock.json。这样就导致了前几个月它那个项目还能运行起来。但是现在重新安装依赖后就不能运行了。

所以我建议项目都要锁定依赖,提供yarn.lockpackage-lock.json文件,这样子就能避免依赖不一导致的问题。

第三方依赖依赖的依赖有问题

我们安装的第三方依赖,它也有可能需要安装的别的依赖。

所以如果它需要的那个依赖有问题,那该怎么办?

我就遇到了这个问题。

我们安装了依赖,运行就报下面这个错 Unexpected token

image.png

然后看是node_modules里面的htmlparser2这个包报的。

通过查看yarn.lock文件得知,这个htmlparser2是cheerio依赖的。

image.png

然后去github看看有没有相关的issues。果然有发现。链接在这里

看来是项目cheerio的版本问题。安装下面这个固定依赖就行。

"cheerio": "=1.0.0-rc.3"

但是我package.json是没有安装这个依赖。那要怎么更新这个依赖呢?

我就在yarn.lock把这个依赖的版本号改成我要的那个版本号了,然后再重新安装。

问题就解决了。