npm run で Missing script エラーが出てスクリプトを実行できない
npm run xxx で Missing script エラーが出るのは、package.json の scripts にキーが無い、実行ディレクトリが違う、workspace の指定漏れの 3 系統。npm run を引数なしで実行し、現在の package.json の script 一覧を確認するのが最短。
公開: 更新:
npm run build npm error Missing script: "build" npm error npm error To see a list of scripts, run: npm error npm run npm error A complete log of this run can be found in: /root/.npm/_logs/2026-08-02T08_46_04_864Z-debug-0.log
npm run build > tmp.8tnqrbayqo@1.0.0 build > echo building && echo done building done
2026-08-02 に node:20 で実際に打って取った出力。検証環境の詳細
要約
npm ERR! Missing script は package.json の scripts にキーが無い、または 見ている package.json が違う のどちらか。npm run を引数なしで実行すれば現在のディレクトリの全 script が表示されるので、まずそこで切り分ける。
実行例
なお npm 10.6.0 からログの接頭辞が npm ERR! から npm error に変わったため、以下の出力は npm error 形式になっている。
npm 10.5 以前では同じエラーが npm ERR! Missing script と表示されるが、原因と対処はどちらも同じである。
scripts = {"test":"echo \"Error: no test specified\" && exit 1"}$ npm run build
npm error Missing script: "build"
npm error
npm error To see a list of scripts, run:
npm error npm run
npm error A complete log of this run can be found in: /root/.npm/_logs/2026-08-02T08_46_04_864Z-debug-0.log
$ echo $?
1$ npm run
Lifecycle scripts included in tmp.8tnqrbayqo@1.0.0:
test
echo "Error: no test specified" && exit 1$ npm pkg set scripts.build="echo building && echo done"
scripts = {"test":"echo \"Error: no test specified\" && exit 1","build":"echo building && echo done"}$ npm run build
> tmp.8tnqrbayqo@1.0.0 build
> echo building && echo done
building
done
$ echo $?
0— 2026-08-02 時点の出力
検証環境2026-08-02 検証
- 検証日
- 実行環境
node:20
この記事の「実行例」は、上記の環境で実際にコマンドを実行して得られた出力をそのまま掲載しています。 再現手順はリポジトリの検証スクリプトとして管理し、定期的に再実行して出力を更新しています。
解決策
1. 一覧表示で確認する
npm run引数なしで実行すると、現在のディレクトリの package.json に定義された script 一覧が表示される。
ここに無ければ存在しない(npm-run-script 公式(新しいタブで開く) 参照)。
2. package.json を直接確認する
jq .scripts package.jsonjq が無ければ cat package.json でも可。
typo の確認はここで終わらせる。
3. ディレクトリ位置を確認する
pwd
ls package.jsonmonorepo では root と app それぞれに package.json がある。
app 側を動かしたいなら cd apps/web してから npm run dev。
4. workspace の場合
# root から子 workspace の script を指定
npm run build -w @scope/app
# 全 workspace で実行(script が無い workspace は skip)
npm run build --workspaces --if-presentscripts の挙動全般は公式の Using npm/scripts(新しいタブで開く)を参照。
5. shell 設定をリセット
npm config get script-shell
npm config delete script-shell # 既定(OS 標準シェル)に戻すユーザ単位の ~/.npmrc の script-shell が存在しないパスを指していると、全 script が spawn ... ENOENT で失敗する。
よくある原因
- typo / 別名:
startをserveと書くなど、ドキュメントと実装で script 名が違う - 間違ったディレクトリ: monorepo で
apps/web配下にいるのに root の script を期待している - workspace の指定漏れ: workspaces 構成で
-wを付けずに root から子の script を呼んでいる package.json破損: 末尾カンマや quote の不整合で JSON 全体が読めない。
この場合は Missing script ではなくnpm error code EJSONPARSEで止まるので、エラーコードで見分けるscript-shell設定: 過去にnpm config set script-shellで無効な shell を指定していると、全 script が失敗する