2023/02/12

[win] 謎のAUX

お仕事で React Native の作業をしていた。
Node.js っぽく書けつつ、Android と iOS の画面については共有でき、必要に応じてネイティブ側の実装をして呼び出したりすることができるのが React Nativeだ。
実装しているといろいろ文句を言いたくなって Flutter とかよさそうだなとは思いつつ(触ったことはない)、あっちはあっちで同じように大変なんだろうなと思う。

 

私のメイン環境は Windows10 で、React Native も Windows 上で開発していた。
Windows11 の環境もあったので、そちらでも開発していた。
もう1台の Windows10 環境があってそちらに git clone して持って行ったのだが、ここで問題が起きた。
npm install などは成功するのだが Android 環境でのビルドに失敗するのだ。
正確には gradle sync がよくわからないエラーで失敗するのだ。

 

ここからタイトルの話になる。
npm install した node_modules の下の方に aux というディレクトリがあり、その中にあるファイルにアクセスしようとして not found 扱いになったようなのだ。

ということに気付くまでは、Android OS のバージョンだの環境変数だの JDK だのいろいろ疑った。
「そういえば aux や con は FAT だと使えなかったよな」ということに気付いたのが数日前だ。

なぜ思い至らなかったかというと、別の Windows 環境ではエラーになっていなかったからだ。
比べてみたが、動く方の Windows 環境では aux ディレクトリの下にあるファイルにテキストエディタでアクセスできたのだが、動かない方の Windows 環境ではアクセスに失敗したのだ。

同じ NTFS のディスクなのになぜ??


まずは仕様から見ていこう。

FAT 名前付け規則
https://learn.microsoft.com/ja-jp/troubleshoot/windows-client/backup-and-storage/fat-hpfs-and-ntfs-file-systems#fat-naming-convention

FAT の予約された名前の中に「AUX」が入っている。 MS-DOS でテキストエディタなどがなくてファイルに文字を書き込みたいときは CON を使ったりしていたので、そういうのと同じ感じだ。

ファイルシステムの FAT32 の仕様書っぽいのには出てこない(文字検索しかしてないが)。

https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc

FAT の仕様のなかでも 8.3規則に紐付いているだけとか? であれば 8.3形式を無効にするやり方はあったと思う。
とはいえ、私がそういう設定をした記憶が無い。
うーむ。

 

実物で確認しよう。
これなのだが。

https://github.com/RobinBobin/react-native-google-drive-api-wrapper/tree/master/src/api/aux

使うときは npm install でやっているからそうすべきだろう。

nvs use 16.16.0
md test
cd test
npm init -y
npm install @robinbobin/react-native-google-drive-api-wrapper

そして中身を見てみる。

> dir node_modules\@robinbobin\react-native-google-drive-api-wrapper\api\aux

 \\. のディレクトリ

ファイルが見つかりません

見えないのだが、Explorer からは見えていて、アクセスには失敗する(テキストエディタで開こうとした)。

image

これが動く環境だと開けるのだ。開けはするが、aux というフォルダなどを作ろうとするとエラーになったりはする。

困ったのだけど、まったく手がかりがないねぇ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。