问题出现:
为了下载yuque文档,在github上找了个方案,可是在使用npm安装模块的时候,总是提示idealTree:node_global: sill idealTree buildDeps ,找遍全网,都是单个的解决方案,特做个方案汇总,给再次遇到这个问题的一个指引。
这也是为了重洗激活CSDN的原力值和本人在网上的第一篇博客,随便Mark一下。写得不好,还请海涵。
说明一下:下文的1,2,3 解决方法失败,并不是不能解决,只是对于本人的计算机环境无法解决。
安装模块
npm i <模块名>
复制
长时间卡在sill idealTree buildDeps
idealTree:node_global: sill idealTree buildDeps
复制
过了很久提示:
查看log文件,发现是访问镜像出错,无法链接。按网上找的方法,一 一实验:
解决方法:
方法1、换源(失败)
npm config set registry https://registry.npmmirror.com //淘宝镜像 npm config set registry https://registry.npmjs.org/ //默认镜像 npm config get registry //查看换源结果 npm config delete registry //删除镜像
复制
方法2、删除缓存(失败)
删除文件: c:\user\.npmrc 清理缓存: npm cache verify 重新设置源镜像安装
复制
方法3、设置&删除代理(失败)
npm config get proxy npm config get https-proxy #删除代理 npm config set proxy null npm config set https-proxy null npm config set strict-ssl false //设置是否认证
复制
方法4、设置为IPV4优先 (成功的方法)
发现返回的镜像网址是ipv6的,ping了一下看看通不通:
npm ping 240e:978:306:3:3::3fa:443
复制
发现没办法ping通,但是直接网页访问镜像网址是正常的。
https://registry.npmmirror.com/
复制
4.1 查看网络前缀访问优先级
netsh interface ipv6 show prefixpolicies
复制
4.2 调整网络前缀优先级,让IPv4访问优先
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4
复制
4.3 验证是否生效
netsh interface ipv6 show prefixpolicies
复制
前缀的含义:
在 IANA IPv6 Special-Purpose Address Registry 中我们可以找到这些前缀的分配归属。 ::1/128:本地回环地址,类似 IPv4 中的 127.0.0.1 ::/0: IPv6 单播地址 ::ffff:0:0/96: IPv4 地址范围 2002::/16: 6to4,具体详见 RFC3056: Connection of IPv6 Domains via IPv4 Clouds 2001::/32: TEREDO,具体详见 RFC4380: Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs) fc00::/7: Unique-Local,具体详见 RFC4193: Unique Local IPv6 Unicast Addresses
复制
4.4 再次ping镜像
ping通了
4.5 重新安装模块
npm i <模块名>
复制
成功!
总结
按网上找到的方法1,2,3都无法解决我出现的问题,甚至按
https://github.com/npm/cli/issues/4085 https://github.com/npm/npm/issues/8731
复制
在host里面增加镜像的ipv6地址,都不行。后来发现ipv6无法访问,但ipv4可以,修改windows的网络访问优先级,终于成功。
附
1 如何重新设置 IPv6访问优先 两种方式,直接重置
1.重置 IPv6 策略
netsh interface ipv6 reset
复制
#重启电脑
2.调整网络前缀优先级
调整网络前缀优先级,重启之后也是生效的。
2 netsh interface ipv6 相关命令如何使用
C:\Windows\system32>netsh interface ipv6 下列指令有效: 此上下文中的命令: 6to4 - 更改到 `netsh interface ipv6 6to4' 上下文。 ? - 显示命令列表。 add - 在一个表格中添加一个配置项。 delete - 从一个表格中删除一个配置项。 dump - 显示一个配置脚本。 help - 显示命令列表。 isatap - 更改到 `netsh interface ipv6 isatap' 上下文。 reset - 重置 IP 配置。 set - 设置配置信息。 show - 显示信息。 下列的子上下文可用: 6to4 isatap 若需要命令的更多帮助信息,请键入命令,接着是空格,后面跟 ?。 C:\Windows\system32>netsh interface ipv6 show 下列指令有效: 此上下文中的命令: show addresses - 显示当前 IP 地址。 show compartments - 显示分段参数。 show destinationcache - 显示目标缓存项目。 show dnsservers - 显示 DNS 服务器地址。 show dynamicportrange - 显示动态端口范围配置参数。 show excludedportrange - 显示所有排除的端口范围。 show global - 显示全局配置普通参数。 show interfaces - 显示接口参数。 show ipstats - 显示 IP 统计。 show joins - 显示加入的多播组。 show neighbors - 显示邻居缓存项。 show offload - 显示卸载信息。 show potentialrouters - 显示潜在路由器。 show prefixpolicies - 显示前缀策略项目。 show privacy - 显示隐私配置参数。 show route - 显示路由表项目。 show siteprefixes - 显示站点前缀表项。 show subinterfaces - 显示子接口参数。 show tcpstats - 显示 TCP 统计。 show teredo - 显示 Teredo 状态。 show tfofallback - 显示各网络 TCP 快速打开回退状态。 show udpstats - 显示 UDP 统计。 C:\Windows\system32>netsh interface ipv6 add 下列指令有效: 此上下文中的命令: add address - 将静态 IP 地址或默认网关添加到指定接口。 add dnsservers - 添加一个静态 DNS 服务器地址。 add excludedportrange - 为连续的端口块添加排除。 add neighbors - 添加邻居地址。 add potentialrouter - 将路由器添加到接口的潜在路由器列表上。 add prefixpolicy - 添加前缀策略项目。 add route - 在接口上添加路由。 add v6v4tunnel - 创建一个“IPv4 中的 IPv6”点对点隧道。 C:\Windows\system32>netsh interface ipv6 set 下列指令有效: 此上下文中的命令: set address - 设定通向接口的 IP 地址或默认网关。 set compartment - 修改分段配置参数。 set dnsservers - 设置 DNS 服务器模式和地址。 set dynamicportrange - 修更改态端口分配所使用端口的范围。 set global - 修改全局配置常规参数。 set interface - 修改 IP 的接口配置参数。 set neighbors - 设置邻居地址。 set prefixpolicy - 修改前缀策略信息。 set privacy - 修改隐私配置参数。 set route - 修改路由参数。 set subinterface - 修改子接口配置参数。 set teredo - 设定 Teredo 状态。
复制