記事一覧

EmDashのビルドが失敗する|部品の不足とnpm ciのエラーを直した手順

EmDashの astro build が「ファイルが無い」で止まり、npm ci も lock ファイルの不一致で動かなかったときの直し方です。編集部の環境で実際に出たエラーと、通ったやり方をそのまま載せます。

EmDashのビルドが失敗する|部品の不足とnpm ciのエラーを直した手順

EmDash の雛形を作ったあと、npx astro build が途中で止まりました。原因は、雛形を作るときのインストールが途中で終わっていて、部品の一部が欠けていたことでした(編集部はそう判断しました)。直すまでにやったことを順番に書きます。

出たエラー

ビルドは、部品 shiki(コードに色を付ける部品)のファイル node_modules/shiki/dist/index.mjs が見つからない、という内容で止まりました。

node_modules/shiki/dist を開くと、本来あるはずのファイルがありませんでした。

npm ci は使えなかった

部品を入れ直すとき、node_modules を消してから npm ci(lock ファイルのとおりに入れ直す命令)を打ちました。ところが、次のエラーで止まりました(一部)。

npm error code EUSAGE
npm error `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync.
npm error Missing: @astrojs/compiler-binding-win32-arm64-msvc@0.5.2 from lock file
npm error Invalid: lock file's zod@ does not satisfy zod@4.5.4

package.json(入れたい部品の一覧)と package-lock.json(実際に入れた版の記録)が食い違っている、という意味です。雛形を作る途中で止まったため、lock ファイルが書きかけになっていたと考えられます。

npm install で通った

npm ci の代わりに、普通の npm install を打ちました。

npm install --no-audit --no-fund

編集部のパソコンでは1回目が10分たっても終わらず、打ち切ってもう一度打つと、2回目は3分ほどで changed 51 packages と出て終わりました。npm install は途中まで入った分を使うので、やり直しても最初からにはなりません。

そのあと npx astro build を打つと、最後に Complete! と出てビルドが通りました。

確かめ方

入れ直しが済んだかは、次の2つで分かります。

  • node_modules/.bin の中に astro と wrangler がある
  • npx astro build が Complete! で終わる

途中で止まったときは node_modules/.bin がまだできていませんでした。

インストール時のプログラムの警告

npm 11 では、esbuild や workerd の「インストール時に動くプログラム」が止められて、別の警告が出ることがあります。こちらは「npm install-scriptsの警告が出たときの直し方」を見てください。

関連記事