运行npm update等命令出错后如何分析问题根源
我今天工作时,在当前前端项目工作目录下执行命令npm update
结果遇到如下错误:registry error parsing json
npm ERR! Unexpected token < in JSON at position 0

有些朋友遇到这个错误,就不知所措了。
本文介绍如何分析npm命令报出的这些错误。
首先根据错误消息判断出这是npm在解析一个json响应时出错,因为这个期望的json响应第一个字符为<.
那么这个json响应的请求是从哪里来的呢?
我们需要查看命令npm update的帮助文档。
执行命令行npm help npm打开本地安装完npm后的帮助文档:

如果npm update后面不指定具体的包名,则会把package.json里列出的所有依赖包更新到最新版本。
我们再看npm update错误输出的最后一行,列出了一个日志文件,包含了错误明细。

发现是请求依赖包sap/n的包描述json文件时出的错:



在npm全局安装目录下这个request.js文件很有用:
"C:\Users\i042416\AppData\Roaming\npm\node_modules\npm\node_modules\npm-registry-client\lib\request.js"
它就是npm发起http请求拿sap/n依赖包的json文件。
我们在json请求的回调函数里加上一些调试信息的打印:

现在就清楚多了,是这个依赖包sap/n的远端有问题,直接联系这个依赖包的负责人去修复。

作为临时替代方案,也可以先把这个引起问题的依赖包从package.json中删除,之后npm update正常工作.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

运行npm update等命令出错后如何分析问题根源的更多相关文章
- mpvue使用vant Weapp运行npm run build命令打包后失效
最近在使用mpvue开发微信小程序,在开发过程中使用有赞的小程序ui框架—— vant Weapp ,至于如何使用在我个人博客中有一篇关于如何使用vant Weapp ,需要的同学请点进这里自行查看. ...
- create-react-app创建项目后运行npm run eject命令报错解决办法
最近在用create-react-app创建项目,因要配置各种组件,比如babel,antd等, 需要运行npm run eject命令把项目的配置文件暴露出来,但是还是一如既然碰到报错,因为是在本地 ...
- react创建项目后运行npm run eject命令将配置文件暴露出来时报错解决方法
最近在用create-react-app创建项目,因要配置各种组件,比如babel,antd等, 需要运行npm run eject命令把项目的配置文件暴露出来,但是还是一如既然碰到报错,因为是在本地 ...
- react 记录:运行npm run eject命令暴露配置文件都报这个错误
问题: react 使用create-react-app命令创建一个项目,运行npm run eject命令暴露配置文件都报这个错误 原因:主要是脚手架添加 .gitgnore文件,但是却没有本地仓库 ...
- npm update常用命令使用
一.更新 npm-check检查更新 npm install -g npm-check npm-check 2. npm-upgrade更新 npm install -g npm-upgrade np ...
- npm install 成功安装依赖后,运行跑不起来怎么办?
最近接手公司的项目,由于代码历史悠久,据说已经最少经历过了6个人的手,查看gitee提交的年限,竟然是1-2年前的代码,好吧.这个锅总得有人接,既然是架构师,就要勇于面对挑战,今天把我解决的方法记录起 ...
- 在Ubuntu下运行 apt-get update命令后出现错误:
在Ubuntu下运行 apt-get update命令后出现错误: The package lists or status file could not be parsed or opened sud ...
- 安装了nodejs后在命令行运行npm报错
安装了nodejs后在命令行运行npm报错:Error: Cannot find module 'internal/util/types' 解决方法:删除目录“C:\Users\mengxiaobo\ ...
- 安装nodejs 后运行 npm 命令无响应处理方法
安装和卸载过nodejs, 也编辑过 C:\Users\{账户}\下的.npmrc文件. 再全新安装nodejs ,运行npm 命令,无响应. 处理方法,删除C:\Users\{账户}\下的.npmr ...
随机推荐
- P3943 星空
传送门 观察题目数据,发现 k ≤ 8 ,可能可以从这里入手解决问题 考虑状态压缩 但是我们每次操作都会让一连串的序列改变,而序列的每个状态都是必须要知道的 很麻烦,所以考虑如何把一段区间表示地简单一 ...
- poj2823滑动窗口(单调队列)
题目传送门 题意:给你一个长度为n的数列,然后用一个长度为k的窗口去框(k<n)每次保存k这个窗口中的最大值和最小值,输出. 思路:这道题最朴素的on2的做法铁定超时,然后我想过一个nlogn的 ...
- HikariPool连接池的使用
HikariDataSource datasource= new HikariDataSource( xxxx ); Connection cn = datasource.getConnection( ...
- java不可见字符 trim
trim()的作用去掉前后的空格, 但是解析excel,出现一个字符串trim之后还是有”空格“ 做了一下实验,原来一些不可见的字符不一定是“空格”, trim()也去不掉, 只能自己写方法了
- hdu 6287
选出来比较合适的博客 https://blog.csdn.net/Tony5t4rk/article/details/80490711 https://blog.csdn.net/Game_Acm/a ...
- 数据结构---Java---有序数组
[自定义有序数组] 查找算法: 线性查找算法:依次对比查询: 二分查找算法:必须是有序: insert:要插入的value与数组中每个元素进行比较,当有值>value时,此处的index之后的元 ...
- Mysql 游标的定义与使用方式
创建游标: 首先在MySql中创建一张数据表: CREATE TABLE IF NOT EXISTS `store` ( `id` int(11) NOT NULL AUTO_INCREMENT, ...
- numpy初用
import numpy as np for k,v in stat.iteritems(): print k v.sort() #v = v[len(v)*3/100:len ...
- C++的友元函数
友元函数不是成员函数,是类外函数所以声明放在类的私有段或公有段且没有区别.但是它可以访问类中的私有成员.友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私 ...
- (转)企业级NFS网络文件共享服务
企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生 ...