共计 3529 个字符,预计需要花费 9 分钟才能阅读完成。
问题出现:
为了下载 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:Windowssystem32>netsh interface ipv6
下列指令有效:
此上下文中的命令:
6to4 - 更改到 `netsh interface ipv6 6to4' 上下文。? - 显示命令列表。add - 在一个表格中添加一个配置项。delete - 从一个表格中删除一个配置项。dump - 显示一个配置脚本。help - 显示命令列表。isatap - 更改到 `netsh interface ipv6 isatap' 上下文。reset - 重置 IP 配置。set - 设置配置信息。show - 显示信息。
下列的子上下文可用:
6to4 isatap
若需要命令的更多帮助信息,请键入命令,接着是空格,后面跟 ?。
C:Windowssystem32>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:Windowssystem32>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:Windowssystem32>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 状态。
原文地址: 全网最全的“npm install 安装停留在 idealTree:node_global: sill idealTree buildDeps”解决方法