はじめに
Storybookを導入しようとした際、以下の見慣れないエラーに遭遇しました。
Node.js version v23.6.0 detected.
Odd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please see https://nodejs.org/en/about/previous-releases/.
Error: Unknown argument: silent
Error: Unknown argument: silent
結論から言うと、これはNode.jsのバージョン選びが原因で発生する、一種の「相性問題」でした。
何が起きたのか?(原因の深掘り)
1. Node.js v23 は「奇数バージョン」
Node.jsには、「LTS(長期サポート)」というルールがあります。
- 偶数バージョン(v20, v22...): 安定版。仕事や本番環境で使う用。
- 奇数バージョン(v21, v23...): 最新機能をお試しする用。サポート期間が短い。
今回使用していた v23.6.0 は、いわば「実験場」のようなバージョンです。そのため、Storybookのような周辺ツールが「新しい仕様」に対応しきれず、内部コマンドが空回りしてしまったのです。
2. Unknown argument: silent の正体
Node.js本体や同梱される npm のバージョンが上がると、これまで当たり前に使えていたオプション( --silent など)が、突然「非推奨」になったり「削除」されたりすることがあります。 Storybook側は「いつも通り silent を付けとこ!」と実行したのに、Node v23 側の npm が「そんな命令、もう知らないよ!」と突き返したのが、今回のエラーの正体です。
--silent オプションって何?
通常、npm install や npm run を実行すると、「今これをダウンロードしています」「ここに保存しました」といったログが大量に流れます。 --silent(短縮形は -s)をつけると、これらの表示を一切出さない(無音にする)ことができます。
しかし、今回はその「気遣い」が仇となりました。最新の Node.js v23 ではコマンドの解釈が厳密になったのか、この --silent という引数自体が「正体不明(Unknown argument)」として拒絶されてしまったようです。
「沈黙は金」と言いますが、プログラミングの世界では、沈黙しすぎてエラーまで隠れてしまったり、逆に沈黙を強いたせいでエラーが起きたりすることもある……という、ちょっと皮肉な教訓でした。
「静かに」対決:Silent vs Quiet
npmには、静かにさせるレベルが2段階あります。
-
--quiet:
「警告(WARN)」や「エラー(ERR)」は出すけど、進捗などの「おしゃべり」は控える(音量を下げるイメージ)。 -
--silent:
文字通り、何があっても一切喋らない(ミュートにするイメージ)。
解決策:どう乗り越えたか
幸い、インストール処理自体は内部で進んでいたため、無理にインストールコマンドを再試行せず、直接起動することで解決しました🎉
# インストールコマンドで止まってしまったが...
npm run storybook
これで無事に起動を確認!ツールが自動で実行してくれるコマンドがエラーになっても、「手動で叩けば動く」という良い教訓になりました。
まとめ:これからの対策
もし同様のエラーが頻発するようなら、以下の手順で「安定版(LTS)」に切り替えるのがエンジニアとしての定石です。
本アプリのデプロイ先である Vercel では、Node.js v24 (LTS)がすでに選択可能でした。v24 は現在「Active LTS」として、本番環境でも安心して使える安定したバージョンです。
一方で、さらに枯れた(十分に検証された)安定を求めるプロジェクトでは v22 (Maintenance LTS) が選ばれることもあります。
バージョンについては、現在の v24 (LTS) を主軸にしつつ、開発環境では最新の動向を追いかけながら、最適なタイミングでアップデートを続けていこうと思います。
以下、変更手順です。
1. nvm などのバージョン管理ツールを導入する
2. nvm install 24 で安定版を入れる
3. nvm use 24 で環境を固定する