You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS与NPM网络异常排查:Kubuntu24、Docker、VirtualBox7环境问题

NPM安装包时ETIMEDOUT错误排查记录

使用nvm 0.40.1、node 22.14.0和npm v10.9.2安装软件包时触发ETIMEDOUT错误,尝试过降级/升级、清理缓存、切换DNS、部署PiHole作为DNS服务器等多种方案,均无效。

自行编写基于require('https')的简单脚本,尝试访问https://registry.npmjs.org(例如https://registry.npmjs.org/data-fns)时,出现大量Aggregate Error:IPv4地址报ETIMEDOUT,IPv6地址报ENETUNREACH。但访问google.com、microsoft.com、docker.com等其他网站完全正常。

环境测试结果

  • VirtualBox 7 + Debian 12 + NAT网络:无法正常工作,npm和脚本均出现相同错误
  • VirtualBox 7 + Debian 12 + 桥接网络:脚本和npm install均正常工作
  • Docker(测试了v18/20/22多个LTS版本):脚本和npm install均正常工作

Kubuntu与Debian虚拟机的NPM配置

(Docker环境为默认配置,路径不同但内容相似)

$ npm config ls
; node bin location = /home/USER/.nvm/versions/node/v22.14.0/bin/node
; node version = v22.14.0
; npm local prefix = /home/USER/works/nodetest
; npm version = 10.9.2
; cwd = /home/USER/works/nodetest
; HOME = /home/USER
; Run `npm config ls -l` to show all defaults

测试脚本

const https = require('https');

https.get('https://registry.npmjs.org/data-fns', (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  const data = [];
  res.on('data', (d) => {
    data.push(d);
  });

  res.on('end', ()=>{
        const result = data.join("")
        console.log(result);
  });

}).on('error', (e) => {
  console.error(e);
});

访问https://registry.npmjs.org的脚本错误信息

(内容已截断,错误会在多个地址重复出现)

AggregateError [ETIMEDOUT]: 
    at internalConnectMultiple (node:net:1139:18)
    at internalConnectMultiple (node:net:1215:5)
    at Timeout.internalConnectMultipleTimeout (node:net:1739:5)
    at listOnTimeout (node:internal/timers:596:11)
    at process.processTimers (node:internal/timers:529:7) {
  code: 'ETIMEDOUT',
  [errors]: [
    Error: connect ETIMEDOUT 104.16.3.35:443
        at createConnectionError (node:net:1675:14)
        at Timeout.internalConnectMultipleTimeout (node:net:1734:38)
        at listOnTimeout (node:internal/timers:596:11)
        at process.processTimers (node:internal/timers:529:7) {
      errno: -110,
      code: 'ETIMEDOUT',
      syscall: 'connect',
      address: '104.16.3.35',
      port: 443
    },
    Error: connect ENETUNREACH 2606:4700::6810:1f22:443 - Local (:::0)
        at internalConnectMultiple (node:net:1211:16)
        at Timeout.internalConnectMultipleTimeout (node:net:1739:5)
        at listOnTimeout (node:internal/timers:596:11)
        at process.processTimers (node:internal/timers:529:7) {
      errno: -101,
      code: 'ENETUNREACH',
      syscall: 'connect',
      address: '2606:4700::6810:1f22',
      port: 443
    },
    ...

内容的提问来源于stack exchange,提问作者Vemman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 14:25:53