持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
前言
现在我们开发项目一般都很少原生开发,除非是很简单的项目。否则一般都会使用到第三方依赖。最近开发新的项目,需要对之前的项目进行升级,这期间遇到的问题,这里总结下。
问题
开源的项目没有锁定依赖
首先我们得知依赖都是有版本的,不同版本的依赖对应的功能是不同的。比如说这个版本解决了某个bug,但是上一个版本可能还没解决。
所以如果同一个项目,如果你和另外一个同事安装了不同的依赖,可能你就能运行起来,而你的同事运行就会报错。
所以针对依赖版本不同的问题,yarn和npm分别推出了锁定版本的文件yarn.lock
和package-lock.json
。你更新了依赖,你的yarn.lock
或package-lock.json
也会同步更新。然后你的同事也会根据yarn.lock
或package-lock.json
来安装依赖,这样能保证你们的依赖是同步的。
我们的项目是基于github的一个第三方开源项目的模板构建的,但是这个开源项目并没有锁定版本,也就是没有yarn.lock
和package-lock.json
。这样就导致了前几个月它那个项目还能运行起来。但是现在重新安装依赖后就不能运行了。
所以我建议项目都要锁定依赖,提供yarn.lock
或package-lock.json
文件,这样子就能避免依赖不一导致的问题。
第三方依赖依赖的依赖有问题
我们安装的第三方依赖,它也有可能需要安装的别的依赖。
所以如果它需要的那个依赖有问题,那该怎么办?
我就遇到了这个问题。
我们安装了依赖,运行就报下面这个错 Unexpected token
然后看是node_modules里面的htmlparser2
这个包报的。
通过查看yarn.lock
文件得知,这个htmlparser2
是cheerio依赖的。
然后去github看看有没有相关的issues。果然有发现。链接在这里
看来是项目cheerio的版本问题。安装下面这个固定依赖就行。
"cheerio": "=1.0.0-rc.3"
但是我package.json是没有安装这个依赖。那要怎么更新这个依赖呢?
我就在yarn.lock
把这个依赖的版本号改成我要的那个版本号了,然后再重新安装。
问题就解决了。