Docker bind mount で SWC ネイティブ依存がプラットフォーム不一致で壊れる
Docker
トラブルシューティング
pnpm
Nest CLI 等で Failed to load "@swc/cli" and/or "@swc/core" が出る場合、SWC のキャッシュ破損よりも node_modules のネイティブ依存が実行環境の OS/CPU と合わないことが原因のことが多い。コンテナで ./app:/app のように bind mount していると、ホスト(例: macOS arm64)で作られた node_modules がそのままコンテナ(Linux)に見える。SWC は optional native package(@swc/core-darwin-arm64 / @swc/core-linux-arm64-gnu 等)をプラットフォームごとに持ち、Linux コンテナで darwin 用しかないと解決に失敗する。「昨日まで動いていた」のはたまたま支障ない node_modules だったから。対処は node_modules を named volume に逃がしてコンテナ専用にするか、pnpm の supportedArchitectures で darwin/linux 両方の native 依存を持たせる。.npmrc の target-platform/target-arch 指定だけでは不十分なことがある。