Open1

VSCodeのdevcontainer内でpnpm installした時に EXDEV: cross-device link not permitted が出る

masaobluemasaoblue

こんな感じのメッセージが出て、一応動作はするんだけど一部のライブラリで型解決がちゃんとできておらず、anyになってしまったりしていた。

 WARN  EXDEV: cross-device link not permitted, link '/workspace/.pnpm-store/v3/files/1d/0688424f69c0e7322aeb720e4e28d9af3b5a7a2dc18b8b198156e377a61a6e05bc824528fca0f8e61ac39b137a028029ff82e5229ad400a3cc22e2bdb687ad' -> '/workspace/front/node_modules/.pnpm/@types+prop-types@15.7.8/node_modules/@types/prop-types_tmp_51882/LICENSE'
Falling back to copying packages from store
 WARN  EXDEV: cross-device link not permitted, link '/workspace/.pnpm-store/v3/files/1d/0688424f69c0e7322aeb720e4e28d9af3b5a7a2dc18b8b198156e377a61a6e05bc824528fca0f8e61ac39b137a028029ff82e5229ad400a3cc22e2bdb687ad' -> '/workspace/front/node_modules/.pnpm/@types+estree@1.0.2/node_modules/@types/estree_tmp_51882/LICENSE'
Falling back to copying packages from store
 WARN  EXDEV: cross-device link not permitted, link '/workspace/.pnpm-store/v3/files/90/b4cb35312d40bcd03b85d08a5c2f7b280322980232f2193134b496d03936115bae3bdeb496bdb0e28c0bbcef328d9f3703092ed276746cd38319f1dd757679' -> '/workspace/front/node_modules/.pnpm/@types+scheduler@0.16.4/node_modules/@types/scheduler_tmp_51882/index.d.ts'
Falling back to copying packages from store
 WARN  EXDEV: cross-device link not permitted, link '/workspace/.pnpm-store/v3/files/a4/65bcf71a8b6e9d8f828dae0f6c7fd3406f4cc500f7913f4fed07aabea7a8c0014126819fe5b83d86cd28b6fa0ff1cf33c2d4308607de2e283830229f32bf6e' -> '/workspace/front/node_modules/.pnpm/csstype@3.1.2/node_modules/csstype_tmp_51882/LICENSE'
Falling back to copying packages from store
 WARN  EXDEV: cross-device link not permitted, link '/workspace/.pnpm-store/v3/files/46/0ecbb143e62e470298e2d333b155bd2dd9a719c387adbf09e5b1f6bea196ee1225a1cdd5eda028167a81add8205644cafe3159fb4a370feebd96afbb5eba91' -> '/workspace/front/node_modules/.pnpm/@nitrogql+core@1.2.0_graphql@16.8.1/node_modules/@nitrogql/core_tmp_51882/dist/config.js'

この時、devcontainer用のcompose.ymlで、volumesを以下のように定義していた

    volumes:
      - type: bind
        source: .
        target: /workspace
        consistency: cached
      - type: volume
        source: front-node-modules
        target: /workspace/front/node_modules
      - type: volume
        source: pnpm-store
        target: /workspace/.pnpm-store

↑だとエラーが出るので、試しにnode_modulesと.pnpm-storeのvolumeに consistency: cached を追加してみた所、エラーの数がだいぶ減った(0にはならなかった...)

    volumes:
      - type: bind
        source: .
        target: /workspace
        consistency: cached
      - type: volume
        source: front-node-modules
        target: /workspace/front/node_modules
        consistency: cached # 追加
      - type: volume
        source: pnpm-store
        target: /workspace/.pnpm-store
        consistency: cached # 追加

正直正しいのか分からないけど、とりあえず今回必要としていた型定義は解決されるようになったので一旦良しとした。

https://docs.docker.jp/docker-for-mac/osxfs-caching.html#cached