问题出现:
为了下载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 状态。