🤖

MacのDocker環境でpnpmインストールするとENOENT: no such file or directoryエラーが出る

2024/04/19に公開

実際のエラー

 ERR_PNPM_ENOENT  ENOENT: no such file or directory, copyfile '/app/.pnpm-store/v3/files/ce/7ac406421b9dbe8d34036ac553a498e1efb9194b8cac509a6b56a0fd0db53728986014e245fba4635728a44f855690d0afbbf99e070939c1c783be46f8a54c' -> '/app/node_modules/.pnpm/next@14.2.2_react-dom@19.0.0-canary-fd0da3eef-20240404_react@19.0.0-canary-fd0da3eef-20240404_lmdnwc5u57ciqg2b6fb36mihcu/node_modules/next_tmp_1/dist/server/future/route-matcher-providers/route-matcher-provider.js.map'

今回は、Next.jsのデフォルト環境でのインストールだったが、別でもなるっぽい。

発生条件

仮装環境のファイルシステムに、virtiofs を使用しているとなるっぽい。
(ファイルシステムを変更出来るなら回避できる。)
(Linux環境の仮想環境を使わないDockerなら大丈夫なはず。)

OrbStackは、virtiofs 一択らしい。

Rancher Desctopでは他の選択肢があるが、速さ的には上記のファイルシステムを使いたいところ。

解決方法

storeを明示的に指定するとエラーが出なくなる。

pnpm config set store-dir /tmp/pnpm/store

参考

https://github.com/pnpm/pnpm/issues/5803

最後に

pnpmだと、Next.jsのビルド時にもエラーが出たので、まだ不安定っぽい。

モジュールロードの厳密さが良いので、使いたかったんだけどなぁと思った。

Discussion