LoginSignup
1
0

More than 1 year has passed since last update.

【npm】キャッシュが壊れてnpm installに失敗する

Last updated at Posted at 2021-08-15

はじめに

久しぶりにcreate-react-appを叩いたら、失敗しました。
調べたことを簡単にメモメモ。
※認識間違っている所があれば、ご指摘お願いします。

現象

下記コマンド実行時にエラーが発生。
コマンド:
npx create-react-app {プロジェクト名} --template typescript

エラー:
ERR! cb() never called!

環境は以下の通り。
・OS :Docker上のUbuntu:20.04
・nvm :0.38.0
・node:14.17.4
・npm :6.14.14

原因

まとめてくださっている記事によると、どうやらnpmのキャッシュの不具合らしい。(キャッシュが壊れている?)
この現象はcreate-react-appに限ったものではなく、npm installでも発生するそうです。

npmのキャッシュとは?

npmのDocによると、
npm installによってインストールしたパッケージのhttpリクエストデータや、パッケージに関連するデータを格納している。らしい。
※英語の読解が甘いかもしれません。。。

また、

The npm cache is strictly a cache: it should not be relied upon as a persistent and reliable data store for package data. npm makes no guarantee that a previously-cached piece of data will be available later, and will automatically delete corrupted contents.

とありました。
内容としては、下記のようなことが書いてあります。
・npmのキャッシュは永続的で、信頼性の高いデータストアとして扱うべきではない。
・npmは以前にキャッシュしたデータに関して、後で利用可能なことは保証しない。
・破損したコンテンツを自動的に削除する。

最後の「自動的に削除する」というのはやって貰えていない気がしますが、ひとまず以前のキャッシュが正しくない場合は対応が必要になりそうです。

解決方法

キャッシュが壊れている場合は下記コマンド実行後、再度create-react-appを叩けばok。
npm cache verify

もし上記コマンドでうまくいかない場合は下記コマンドでキャッシュをクリアする方法でもうまくいくらしいです。
※こちらはverifyでうまくいったため、試してはいません。
npm cache clean --force
※手動でキャッシュをクリアする際は、--forceで強制的に削除する必要があるようです。

参考

npm-cache
Node.js と npm 再入門(その4:便利コマンド)
npm install実行時、 ERR! cb() never called!エラー対処

以上ですー。

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