【问题标题】:No internet access for npm when using cellular hotspot使用蜂窝热点时,npm 无法访问 Internet
【发布时间】:2021-06-02 16:50:15
【问题描述】:

在 Windows 10 上,当我通过手机的热点连接到互联网时,npm 突然无法在任何终端(Powershell、cmd、wsl 或 VS Code 中的终端)中访问互联网。这已经工作了多年,我看不出是什么催化剂来破坏它(我没有安装任何新的东西或更改任何互联网设置)。如果我使用任何浏览器,互联网都可以正常工作,只是从终端无法正常工作。我已经尝试完全停用防火墙,但这并不能解决问题。在注意到这一点的几天前,我确实运行了 wsl --shutdown 命令,但我不知道即使在 wsl 之外,它也会产生如此广泛的影响。当通过不是来自手机热点的 wifi 时,所有终端也可以正常连接到互联网。问题开始后,我将 Windows 更新到了最新版本的 Windows 10,但这并没有做任何事情。我用的手机是Pixel4A。

更新:我仍然可以 pip 安装包,但我不能将 npm 用于任何需要互联网的东西。例如,运行 npm outdated 会返回:

...
22 verbose Windows_NT 10.0.19042
23 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "outdated"
24 verbose node v12.18.4
25 verbose npm  v6.14.6
26 error code ECONNRESET
27 error errno ECONNRESET
28 error network request to http://registry.npmjs.org/express failed, reason: read ECONNRESET
29 error network This is a problem related to network connectivity.
29 error network In most cases you are behind a proxy or have bad network settings.
29 error network
29 error network If you are behind a proxy, please make sure that the
29 error network 'proxy' config is set properly.  See: 'npm help config'

我不认为我在使用代理,但是当我在浏览器中运行正在本地构建的应用程序时确实会收到此错误(该应用程序仍在构建):

Proxy error: Could not proxy request /favicon.ico from localhost:3000 to http://localhost/.

这是 nslookup 在 cmd 和 powershell 中返回的内容:

PS C:\> nslookup google.com
Server:  UnKnown
Address:  192.168.13.64

Non-authoritative answer:
Name:    google.com
Addresses:  2607:f8b0:4006:80a::200e
          142.250.80.14

【问题讨论】:

  • 您终端上的 nslookup google.com 说什么?可能是 DNS 配置错误,但您的浏览器选择了不同的设置(可能来自 DNS over HTTPS 自动升级或扩展),因此它们仍然有效
  • 如果禁用metered connection会怎样?
  • 在 PS 上尝试 curl -Uri:"registry.npmjs.org/express"
  • @CodeCaster 热点连接未计量。
  • @Martheen curl 命令以代码 200 退出,所以我认为这是成功的,但它没有改变任何东西。

标签: windows powershell npm cmd hotspot


【解决方案1】:

如果您安装了 Dynatrace,该程序可能会破坏正常的 npm 工作。卸载 Dynatrace 后,问题可能会解决。

此外,使用不同的防病毒、反恶意软件对 rootkit、间谍软件、病毒等进行全面扫描并清理发现的内容可以帮助解决问题。

【讨论】:

    【解决方案2】:

    首先,查看最新的 Windows 更新列表,在此期间是否安装了 kb?不?尝试在支持网络的安全模式下加载您的操作系统,是否可以解决问题并在安全模式下工作?不?使用移动接入点查看 [ipconfig /all , route print, tracert google.com] 的结果,和使用 Wi-fi 的 [ipconfig /all , route print, tracert google.com] 比较结果。 最终也是最困难的,但 100% 的方法.. 加载并安装 WireShark,设置过滤器以嗅探 http、https 并在您的 shell 中启动互联网连接,它在哪一步卡住了?

    【讨论】:

      【解决方案3】:

      您可以先尝试清理缓存

      $ npm cache clean --force 
      

      我知道这无关,但在你的情况下是无害的, 如果这不起作用。 那么,也许你可以用一面镜子

      $ npm config set registry https://registry.npm.taobao.org/
      

      并使用 npm install

      $ npm install your-lib-name
      

      您可以稍后使用 npm set registry 重置它

      $ npm set registry https://registry.npmjs.org/
      

      【讨论】:

        【解决方案4】:

        您可以尝试编辑主机文件以手动分配 DNS 条目并使用蓝牙网络共享。

        【讨论】:

          【解决方案5】:

          您的运营商可能开始执行他们可能在其 ToS 中包含的“禁止网络共享”规则。

          如果不查看您的网络设置,真的很难说更多,但从您的浏览器流量仍然很好的事实来看,我怀疑某种代理确实会注入您的管道:它可以以某种方式推送到您的 Windows 主机或透明地处理网络上的所有 http 流量。

          我认为测试这个理论是否正确的一种方法是在你的手机上安装一个 VPN 客户端,然后将所有绑定的流量路由到那里。

          【讨论】:

          • 谢谢,但在我的手机上使用 vpn 没有任何影响。
          • 是的,这可能有点棘手。您可能会查看为您完成所有这些反网络共享包的应用程序。我无法提出任何经证实的细节,但我记得在四处寻找细节时看到了一些名字。
          • 因为我可以在网络共享时从浏览器连接到互联网,所以我认为这不是问题。
          猜你喜欢
          • 2014-01-01
          • 1970-01-01
          • 2020-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-05
          • 1970-01-01
          • 2019-08-28
          相关资源
          最近更新 更多