EmDashのビルドが失敗する|部品の不足とnpm ciのエラーを直した手順
EmDashの astro build が「ファイルが無い」で止まり、npm ci も lock ファイルの不一致で動かなかったときの直し方です。編集部の環境で実際に出たエラーと、通ったやり方をそのまま載せます。
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.4package.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の警告が出たときの直し方」を見てください。