できない.dev

npm run で Missing script エラーが出てスクリプトを実行できない

npm run xxxMissing script エラーが出るのは、package.json の scripts にキーが無い、実行ディレクトリが違う、workspace の指定漏れの 3 系統。npm run を引数なしで実行し、現在の package.json の script 一覧を確認するのが最短。

公開: 更新:

要約

npm ERR! Missing scriptpackage.jsonscripts にキーが無い、または 見ている package.json が違う のどちらか。npm run を引数なしで実行すれば現在のディレクトリの全 script が表示されるので、まずそこで切り分ける。

よくある原因

  1. typo / 別名: startserve と書くなど、ドキュメントと実装で script 名が違う
  2. 間違ったディレクトリ: monorepo で apps/web 配下にいるのに root の script を期待している
  3. workspace の指定漏れ: workspaces 構成で -w を付けずに root から子の script を呼んでいる
  4. package.json 破損: 末尾カンマや quote の不整合で JSON 全体が読めず、scripts も空扱い
  5. script-shell 設定: 過去に npm config set script-shell で無効な shell を指定していると、全 script が失敗する

解決策

1. 一覧表示で確認する

npm run

引数なしで実行すると、現在のディレクトリの package.json に定義された script 一覧が表示される。
ここに無ければ存在しない(npm-run-script 公式(新しいタブで開く) 参照)。

2. package.json を直接確認する

jq .scripts package.json

jq が無ければ cat package.json でも可。
typo の確認はここで終わらせる。

3. ディレクトリ位置を確認する

pwd
ls package.json

monorepo では 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-present

scripts の挙動全般は公式の Using npm/scripts(新しいタブで開く)を参照。

5. shell 設定をリセット

npm config get script-shell
npm config delete script-shell   # 既定(OS 標準シェル)に戻す

ユーザ単位の ~/.npmrc の設定が壊れていると、全 script が command not found を返す。

実行例

なお 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
終了コード: 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
終了コード: 0

— 2026-08-02 時点の出力

この記事は役立ちましたか?