Nuxt のスターターテンプレートを動かそうとして npm run dev を実行したところ、警告とエラーが出て起動しませんでした。

結論から書くと、原因は Node.js のバージョンが古かったことです。nnvm で Node を LTS に上げれば解決します。

私の場合、3.x系の gulp を使うために Node のバージョンを意図的に下げていたのが原因でした。同じように、古いプロジェクトのために Node を下げたまま新しいツールを動かそうとすると、この状態になります。

この記事では、当時出た2種類のメッセージと、それぞれの現在の対処法をまとめます。当時使った npm config set scripts-prepend-node-path true は、npm 7 以降では存在しない設定です。今この記事にたどり着いた人が同じコマンドを打たなくて済むように、その点も含めて書き直しました。

npm runでエラーが出るときに最初に確認すること

結論:まず node -vnpm -v を実行して、バージョンを確認してください。Node が EOL(サポート終了)のバージョンだと、多くのツールがそもそも動きません。

node -v
npm -v

2026年9月時点の Node.js のサポート状況は次のとおりです。

▼Node.js のバージョンとサポート状況

バージョン コードネーム 状態
v26 Current(最新。本番向けではない)
v24 Krypton Active LTS(推奨)
v22 Jod Maintenance LTS
v20 以下 Iron ほか EOL(サポート終了)

本番で使うプロジェクトは Active LTS か Maintenance LTS を選びます。node -v が v20 以下を返したら、それが不具合の原因である可能性がかなり高いです。

npm runコマンドで警告が出る

npm run を実行したときに出た警告がこちらです。

npm runコマンドを実行したときに表示された警告メッセージ

--scripts-prepend-node-path というオプションを使って設定を true にしてほしい」という内容の警告です。これは npm が、実行に使った Node の場所を PATH の先頭に足すかどうかを尋ねているものでした。

当時の対処(npm 6 以前)

当時は次のコマンドで警告が消えました。

npm config set scripts-prepend-node-path true

現在は不要(npm 7 以降で廃止)

結論:scripts-prepend-node-path は npm 7 で廃止され、現在の npm には存在しません。今このコマンドを実行しても設定は効かず、不明な設定として警告が出るだけです。

npm 11 の設定一覧にもこの項目はありません。したがって、この警告が出るような古い npm を使っていること自体が本当の問題です。npm は Node に同梱されているので、Node を上げれば npm も一緒に上がります。

npm だけを上げたい場合は次のコマンドですが、Node が古いままだと結局どこかで詰まります。

npm install -g npm@latest

npm run devを実行したらエラーが出る

警告を消したあと npm run dev を実行すると、今度はエラーで止まりました。

npm run devを実行したときに表示されたエラーメッセージ

このときの Node のバージョンは v11.15.0 でした。当時としても2世代前で、Nuxt が要求するバージョンを満たしていませんでした。

なお、このとき動かそうとしていたのは Vue のサンプルプロジェクトでした。フレームワーク側の問題ではなく、実行環境の Node が古かったことが原因です。

Node.jsのバージョンを上げて解決する

結論:Node のバージョン管理ツールを使って LTS に上げます。macOS なら nnvm のどちらかを使ってください。

▼nとnvmの違い

n nvm
入れ方 npm でインストール シェルスクリプトを実行
切り替え システム全体のNodeを置き換える シェルごとに切り替えられる
プロジェクト別の固定 できない .nvmrc で指定できる
向いている人 常に1つのバージョンでよい人 案件ごとにバージョンが違う人

古い gulp のために Node を下げる、といった事情がある場合は nvm を選んでください。プロジェクトごとに切り替えられるので、下げたまま戻し忘れる事故が起きません。

nを使ってアップデートする

n をインストールします。

npm install -g n

LTS 版に上げます。

sudo n lts

sudo n latest ではなく sudo n lts を使ってください。latest は Current(最新版)を入れるコマンドで、本番向けのバージョンではありません。安定して使いたいなら LTS を選びます。

バージョンを確認します。

node -v

Active LTS のバージョンになっていれば完了です。

nvmを使ってアップデートする

nvm を入れている場合は、次のコマンドで LTS を入れて切り替えます。

nvm install --lts
nvm use --lts

プロジェクトの直下に .nvmrc を置いておくと、そのディレクトリで nvm use と打つだけで指定のバージョンに切り替わります。

lts/krypton

バージョン番号を直接書いても構いません。チームで開発する場合は、この1ファイルをリポジトリに入れておくと「手元では動くのに他の人の環境で動かない」が減ります。

同じエラーを繰り返さないための設定

結論:package.jsonengines に必要な Node のバージョンを書いておくと、条件を満たさない環境でインストールしたときに警告が出ます。

{
	"engines": {
		"node": ">=22.0.0"
	}
}

さらに強制したい場合は、プロジェクト直下に .npmrc を置いて次のように書きます。条件を満たさない環境ではインストール自体が失敗するようになります。

engine-strict=true

バージョン違いによるエラーは、エラーメッセージから原因が読み取りにくいのが厄介なところです。ツールが動かないときは、まず node -v を疑うと回り道が減ります。今回のケースも、警告に書かれたオプションを設定するより先にバージョンを確認していれば、1手で終わっていました。

Node やターミナル周りの環境を整え直したい場合は、MacにHomebrewとVimをインストールする手順とパス設定もあわせてどうぞ。パスの通し方でつまずいたときの確認手順をまとめています。

ABOUT ME
りん
このブログでは、Web開発やプログラミングに関する情報を中心に、私が日々感じたことや学んだことをシェアしています。技術と生活の両方を楽しめるブログを目指して、日常で触れた出来事や本、グルメの話題も取り入れています。気軽に覗いて、少しでも役立つ情報や楽しいひとときを見つけてもらえたら嬉しいです。