エラーの解読ターミナルに表示される大量の赤いテキストほど、プロジェクトを停滞させるものはありません。npm installを実行した際にUNABLE_TO_GET_ISSUER_CERT_LOCALLYエラーが表示された場合、それは証明書の信頼性に関する問題である可能性が高いです。これは通常、npmがレジストリに接続しようとした際に、ネットワークから提供されたセキュリティ証明書を検証できない場合に発生します。
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! errno UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! https://registry.npmjs.org/package-name へのリクエストに失敗しました
根本的な原因企業のファイアウォール、VPN、ウイルス対策ソフト(ZscalerやCisco Umbrellaなど)は、脅威をスキャンするためにHTTPSトラフィックを傍受することがよくあります。その際、オリジナルのWebサイトの証明書を独自の自己署名証明書に置き換えます。
Windowsはこのカスタム証明書を信頼していても、Node.jsは信頼しません。Node.jsはWindowsの証明書ストアではなく、独自の組み込み信頼済み認証局(CA)リストを使用するためです。認識できない証明書を検出すると、保護のために接続を遮断します。
解決策1:5秒でできる修正(本番環境では非推奨)個人プロジェクトなどで手っ取り早い回避策が必要ですか?npmに対してSSLのチェックを緩めるよう設定できます。これは作業に戻るための最速の方法ですが、セキュリティホールを作ることになります。npmが通信相手を検証しなくなるため、中間者(MitM)攻撃に対して脆弱になります。
ターミナルで以下を実行します:
npm config set strict-ssl false
インストールが終わったら、安全のために設定を元に戻しておくべきです:
npm config set strict-ssl true
解決策2:安全なアプローチ(推奨)正しい修正方法は、Node.jsに会社の証明書を信頼させることです。ルート証明書(通常は2KB程度の小さな.pemまたは.cerファイル)を入手し、npmにその場所を教える必要があります。
Chromeで証明書をエクスポートする方法:- ブラウザでhttps://registry.npmjs.orgにアクセスします。- アドレスバーの鍵アイコンをクリック > この接続は保護されています > 証明書は有効です を選択します。- 詳細タブを開きます。階層の最上位にある証明書(ルートCA)を選択します。- エクスポートをクリックし、Base64-encoded X.509 (.CER)ファイルとして保存します。保存したら、npmにその場所を設定します:
npm config set cafile "C:\Users\YourName\Documents\root-cert.pem"
解決策3:グローバル環境変数を設定するnpmの設定だけでは不十分な場合があります。VS Codeの拡張機能やNode.jsベースのビルドスクリプトが依然として失敗することがあります。システム環境変数を設定することで、すべてのNode.jsアプリケーションに対して一度に解決できます。
- Windowsキーを押し、「env」と入力します。システム環境変数の編集を選択します。- 右下の環境変数をクリックします。- ユーザー環境変数の下にある新規をクリックします。- 変数名を
NODE_EXTRA_CA_CERTSに設定します。- 変数値に証明書のフルパス(例:C:\certs\company-ca.pem)を設定します。注意: この変更を反映させるには、ターミナルやVS Codeを一度閉じてから再起動する必要があります。
検証:うまくいきましたか?設定が有効であることを確認するために、設定リストをチェックします:
npm config list
cafileまたはstrict-sslの行を探します。実際にテストするには、依存関係のない小さなパッケージ(is-numberなど)をインストールしてみてください:
npm install is-number
ISSUER_CERTエラーが出ずにプログレスバーが進めば、準備完了です。

