Reactの開発環境を作成しようと思ってnpx create-react-app react-sample
とコマンド入力したところ、エラー(FetchError reason: socket hang up)が発生しました。
また、他にもnpm install -g npm@[バージョン]
等を実行した時にも同様のエラーが発生しました。
結局大した話ではなかったのですが、一応解決方法を残しておきます。
実際に発生したエラー
66 verbose stack FetchError: request to https://registry.npmjs.org/psl/-/psl-1.8.0.tgz failed, reason: socket hang up
66 verbose stack at ClientRequest.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\minipass-fetch\lib\index.js:110:14)
66 verbose stack at ClientRequest.emit (node:events:390:28)
66 verbose stack at TLSSocket.socketOnEnd (node:_http_client:471:9)
66 verbose stack at TLSSocket.emit (node:events:402:35)
66 verbose stack at endReadableNT (node:internal/streams/readable:1343:12)
66 verbose stack at processTicksAndRejections (node:internal/process/task_queues:83:21)
~~~中略~~~
74 error network request to https://registry.npmjs.org/psl/-/psl-1.8.0.tgz failed, reason: socket hang up
75 error network This is a problem related to network connectivity.
75 error network In most cases you are behind a proxy or have bad network settings.
75 error network
75 error network If you are behind a proxy, please make sure that the
75 error network 'proxy' config is set properly. See: 'npm help config'
エラーの原因
ネットワークが原因でファイルのフェッチに失敗しているのは分かるのですが、別にプロキシ環境で実行しているわけでもないし、ネットワークが不調というわけでもない。なんで???
と思って上記エラーの数行上を見てみたら、こんなことが書いてありました。
57 silly audit error Beginning October 4, 2021, all connections to npm websites and the npm registry - including for package installation - must use HTTPS and TLS 1.2 or higher.
57 silly audit error
57 silly audit error For more information see this blog post: https://github.blog/2021-08-23-npm-registry-deprecating-tls-1-0-tls-1-1/
要するに2021年10月4日以降はレジストリサイトに接続するのに「HTTPS and TLS 1.2 or higher」を絶対使ってね☆ということでした。
現状の設定がどうなっているかはnpm config list
で確認できました。結果、httpsではなくhttpを使用していることが判明しました。
D:\dev>npm config list
~~~中略~~~
http-proxy = null
https-proxy = null
msvs_version = "2015"
proxy = null
python = "python2.7"
registry = "http://registry.npmjs.org/" ←ここ
strict-ssl = false
そして私がコマンドを実行したのは2021年12月2日。だからエラーになったということみたいです。
解決方法
以下のコマンドを実行してレジストリにアクセスする際にHTTPSを使うように変更しました。
npm config set registry https://registry.npmjs.org/
その後npx create-react-app react-sample
を実行したところ今度は成功しました。
終わり。