1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker内でのnpm installがECONNREFUSEDエラーになる現象への対処法(M1Mac)

Posted at

はじめに

ハッカソンに参加した際に、1人だけ環境構築に手こずったので、対処法を記録しておきます。自分の備忘録になるついでに、同じエラーで困っているという方の助けになりますように。

エラーのログ

docker内でnpm installを実行すると以下のようなエラーが出ます。

npm ERR! code ECONNREFUSED
npm ERR! errno ECONNREFUSED
npm ERR! FetchError: request to http://registry.npmjs.org/@testing-library%2fjest-dom failed, reason: 
npm ERR!     at ClientRequest.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:130:14)
npm ERR!     at ClientRequest.emit (node:events:519:28)
npm ERR!     at _destroy (node:_http_client:880:13)
npm ERR!     at onSocketNT (node:_http_client:900:5)
npm ERR!     at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
npm ERR!  FetchError: request to http://registry.npmjs.org/@testing-library%2fjest-dom failed, reason: 
npm ERR!     at ClientRequest.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/minipass-fetch/lib/index.js:130:14)
npm ERR!     at ClientRequest.emit (node:events:519:28)
npm ERR!     at _destroy (node:_http_client:880:13)
npm ERR!     at onSocketNT (node:_http_client:900:5)
npm ERR!     at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {
npm ERR!   code: 'ECONNREFUSED',
npm ERR!   errno: 'ECONNREFUSED',
npm ERR!   type: 'system',
npm ERR!   requiredBy: '.'
npm ERR! }
npm ERR! 
npm ERR! If you are behind a proxy, please make sure that the
npm ERR! 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2024-03-10T06_07_18_666Z-debug-0.log

環境

  • M1 Mac
  • Docker version: 20.10.23

Docker内の環境は以下の通りです。

  • node: v21.7.0
  • npm: v10.5.0

解決方法

ローカル環境のnodeのバージョンをdocker内のバージョンに合わせて、作業フォルダ内でnpm installを行った後、コンテナの中に入ってnpm installを行うことで解決しました。

手順

  1. docker内のnodeのバージョンを確認
    # node -v
    v21.7.0
    

  2. ローカル環境のnodeのバージョンをdockerのnodeのバージョンと揃える
    $ nodebrew install v21.7.0
    $ nodebrew use 21.7.0
    

  3. 作業フォルダに移動してnpm installを実行する
    $ cd hoge
    $ npm install
    
    この時に、作業フォルダ内にnode_modulesという名前のフォルダが作成されます。

  4. docker内に入り、npm installを行う
    # npm install
    
    エラーが出なければ、このままnpm startでreactの画面が立ち上がると思います。

nodebrewについての詳しい解説はこちら↓

他にも!色々試した対処法

色々試してみた方法をまとめておきます。
上記の解決方法でうまくいかない場合に参考になればと思います。

IPv6からIPv4に変更する

$ export NODE_OPTIONS=" --dns-result-order=ipv4first "

を実行した後、npm install を行う。

私の環境では以下のようなエラーが発生してしまいました。

npm ERR! code ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR! network request to http://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz failed, reason: 
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network 
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2024-03-10T09_22_23_795Z-debug-0.log

参考になりそうなURLも貼っておきます。

他の人からpackage.jsonをもらってきてnpm ciする方法

私の場合はこちらの方法でも同じエラーが出ました。
参考になりそうなURLを添付しておきます。

proxyとhttps-proxyを正しく設定し直す方法

私の場合は特に組織に属しているわけではないので、proxyとhttps-proxyがnullであることを確認したり、初期化処理を行ったりしていました。

  • proxy環境下ではない方用の参考になりそうなサイト

npm config listを実行して、proxyまたはhttps-proxyに変な値が登録されていないか確認されてみると解決するかもしれません。

  • proxy環境下で開発を行なっている方用の参考になりそうなサイト
    こちらは私の環境とは異なるので、参考になりそうなURLだけ載せておきます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?