はじめに
ハッカソンに参加した際に、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
を行うことで解決しました。
手順
- docker内のnodeのバージョンを確認
# node -v v21.7.0
- ローカル環境のnodeのバージョンをdockerのnodeのバージョンと揃える
$ nodebrew install v21.7.0 $ nodebrew use 21.7.0
- 作業フォルダに移動してnpm installを実行する
この時に、作業フォルダ内にnode_modulesという名前のフォルダが作成されます。
$ cd hoge $ npm install
- 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だけ載せておきます。