記錄一下使用npm 的踩坑問題
1. 問題描述
當剛clone一個項目,使用npm install
安裝項目依賴包的時候,報錯:
npm ERR! code ETARGET
npm ERR! notarget No matching version found for event-stream@3.3.6
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of 'project-name'
npm ERR! notarget
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/dragon/.npm/_logs/2018-12-19T11_45_03_469Z-debug.log
2. 解決方法
從錯誤信息:No matching version found for event-stream@3.3.6
可以知道,是由於沒有找到這個包的3.3.6版本。
首先去 https://www.npmjs.com/ 網站搜索這個包,看看是否發布了這個版本:
- 打開這個包:https://www.npmjs.com/package...
- 點擊Versions查看這個包的所有歷史版本。
經查看,這個版本確實不存在
2.1 解決方法一
如果在npm官網找到了這個版本,那么:
需要把npm的源切換成npm自己的源在嘗試,即可正確安裝。
2.2 解決方法二
如果這個特定版本的包在npm官網沒有找到,說明確實沒有。
此時需要找到哪個包依賴了這個包。
看錯誤信息中有一條信息:It was specified as a dependency of 'project-name'
, 說明這個特定版本的包是project-name
所依賴的。
那么直接單獨安裝這個包即可解決問題。
由於project-name
是我項目的名字,所以是這個項目下的某一個包依賴了這個特定的包。
如果錯誤信息里面沒有更多的信息,那么只能去npm的log文件里面去查看:/Users/dragon/.npm/_logs/2018-12-19T11_45_03_469Z-debug.log
在錯誤日志文件里面搜索event-stream@3.3.6
后,找到了一段依賴信息:
9828 silly saveTree ├─┬ gulp-resource@1.0.39
9828 silly saveTree │ ├── amd-deploy@1.0.29
9828 silly saveTree │ └─┬ event-stream@3.3.6
9828 silly saveTree │ ├── flatmap-stream@0.1.1
發現gulp-resource@1.0.39
依賴了event-stream@3.3.6
.
在package.json文件里面確實發現了這個包gulp-resource
現在手動安裝這個包:npm i gulp-resource@1.0.39
~ npm i gulp-resource@1.0.39
> node lib/install.js
✔ optipng pre-build test passed successfully
+ gulp-resource@1.0.39
added 1012 packages from 500 contributors in 18.393s
正確安裝后,在重新npm install
就能正確安裝所有包了。
問題解決。
</article>