Raspberry Pi で、 npm install
しようとすると、 ECONNREFUSED
というエラーが出てきて嵌った。
Raspberry Pi の OS は Raspbian GNU/Linux 11 (bullseye) で、 Debian のバージョンは 11.1 。
npm-cache_logs のログを確認したところ、このような内容だった。
0 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'install', 'is-promise' ]
1 info using npm@8.1.2
2 info using node@v17.1.0
...
50 error FetchError: request to https://registry.npmjs.org/is-promise failed, reason: connect ECONNREFUSED 2606:4700::6810:1a23:443
50 error at ClientRequest.<anonymous> (/usr/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:110:14)
50 error at ClientRequest.emit (node:events:390:28)
50 error at TLSSocket.socketErrorListener (node:_http_client:447:9)
50 error at TLSSocket.emit (node:events:402:35)
50 error at emitErrorNT (node:internal/streams/destroy:164:8)
50 error at emitErrorCloseNT (node:internal/streams/destroy:129:3)
50 error at processTicksAndRejections (node:internal/process/task_queues:83:21) {
50 error code: 'ECONNREFUSED',
50 error errno: 'ECONNREFUSED',
50 error syscall: 'connect',
50 error address: '2606:4700::6810:1a23',
50 error port: 443,
50 error type: 'system',
50 error requiredBy: '.'
50 error }
51 error If you are behind a proxy, please make sure that the
51 error 'proxy' config is set properly. See: 'npm help config'
52 verbose exit 1
ログを見ただけでは原因がわからなかったので「 npm ECONNREFUSED 」で調べたものの、プロキシ関係の話しか出てこなかった。プロキシの設定は行っていないので今回のエラーはこれらには該当しないと考えられる。
次に、 ECONNREFUSED となった IP アドレスを調べてみたら以下のページがヒットした。
よくわかんないけど、 IPv6 で npm パッケージをインストールすると上手く行かないことがあるみたい。
ifconfig
で Raspberry Pi のネットワークの設定を確認したところ、 IPv6 が有効になっていたので、無効にする方法を調べたら、下のページがヒットした。
このページの内容に沿って作業を進めていった。 /etc/sysctl.conf を普通のテキストエディタで編集したところ「権限がない」的なことを言われて保存できなかったので、 sudo nano
で編集して保存した。
再起動して sudo sysctl -p
して再度 npm install
したところパッケージのインストールに成功した。
CDN の問題だったらもっと日本語の記事があってもいい気がするし、結局原因がどこにあるのかがわからないのがもどかしいが、あいにく深堀りできるほどの知識を私はまだ持ち合わせていない。
2022/09/18 追記:Linux Mint でも同じことが起きた。