使用npm的注意事项及错误收集
前言
记录npm使用的一些注意事项,以及收集一些npm错误的解决办法。
更新node和npm
更新node
- 安装
n模块: 
1  | sudo npm i -g n  | 
- 安装最新稳定版node:
 
1  | sudo n stable  | 
更新npm
1  | sudo npm i -g npm  | 
注意:更新完node和npm后,可能当前环境并没有刷新,需要手动更新命令行工具或重新进入;
手动更新:
1  | source ~.zshrc  | 
通过nvm更新node和npm
nvm即Node version manager,是专门用来管理node版本切换的工具;
- 安装相应版本的
node: 
1  | nvm install v10.8.0  | 
执行上述命令会自动安装v10.8.0的node及其对应的npm;安装完后会自动切换到安装完后的node版本,需要注意的是这只是临时切换。
- 永久切换
node版本: 
1  | nvm alias default v10.8.0  | 
这样关闭终端后,打开的默认node版本就是上述设置的版本。
- 临时切换
node版本: 
1  | nvm use vxx.x.x  | 
- 查看已安装的
node版本: 
1  | nvm list  | 
NPM错误收集
ERR 4048 unlink
1  | npm ERR! errno: -4048,  | 
导致问题的原因:项目中文件夹或某个文件被其他程序占用(很可能就是vscode的锅),导致文件没有权限被读写;
解决办法:使用杀毒软件对文件夹进行占用解锁;如腾讯管家:

相关参考链接:
- node.js - Fail to install npm package “npm ERR! errno -4048” - Stack Overflow
 - node.js - npm install give Error: EPERM, unlink - Stack Overflow
 
EPERM: operation not permitted
1  | npm ERR! code EPERM  | 
该类错误通常是项目文件夹的权限不够(win10中可能出现),在文件夹右击,然后选择『管理员取得所有权』即可。(很纳闷,明明是管理员账户为啥还有这情况出现?)

如果是解锁文件和赋予管理员权限还是提示-4048的错误时,可以考虑在npm命令后面加上--no-bin-links参数;如:
1  | npm i xxx --no-bin-links  | 
参考文档:Error: EPERM: operation not permitted, unlink · Issue #2464 · phoenixframework/phoenix
Unexpected end of JSON input while parsing near
1  | Unexpected end of JSON input while parsing near xxx  | 
导致问题的原因:可能是之前安装的时候出现错误导致安装中断,因此npm缓存中含有不正确的安装包;
解决办法:使用npm cache clean -f清除缓存,然后再次安装即可;
相关参考链接:
node-sass安装失败
解决办法:直接单独设置淘宝源镜像进行安装;
1  | npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/  | 
参考链接:整理 node-sass 安装失败的原因及解决办法 - 个人文章 - SegmentFault 思否
提示包不存在:code ETARGET
如这样的错误:
1  | npm ERR! code ETARGET  | 
查找原因是package-lock.json当中的这个包确实没有这个版本;
解决办法:直接把package-lock.json这个包的信息去掉,然后重新安装即可;千万不要尝试直接在里面改变包的版本号,那样校验不会通过!