Error "Source and destination must not be the same" in move-sync on unicode normalization difference
See original GitHub issue- Operating System: macOs 10.15.7 (latest Catalina)
- Node.js version: v14.15.3
fs-extra
version: 9.0.1
First I’d like to thank you for fs-extra
which is really great!
I’m fighting with an error when trying to move files: “Source and destination must not be the same.”
I filtered the src and destination with ===
and they are NOT the same -> so why is fs-extra
rejecting me?
Digging deeper, they look the same. When comparing their normalized unicode representation, they are indeed the same. So I’m suspecting (but don’t really know) that [EDIT] the file system is doing unicode normalization.fs-extra
is doing a unicode normalization before validating src vs dest. (maybe Object.checkPathsSync (xxx/node_modules/fs-extra/lib/util/stat.js:51:11)
If true, I believe this is incorrect. There are discussions for ex. in https://news.ycombinator.com/item?id=13953800 that states that for ex. APFS is treating pathes are “bags of bytes” and intentionally not normalizing (cf. linked https://mjtsai.com/blog/2017/03/24/apfss-bag-of-bytes-filenames/)
Hence I believe that fs-extra should not normalize. (not an expert, happy to be explained wrong)
~~somehow related to https://github.com/jprichardson/node-fs-extra/issues/759~~
Issue Analytics
- State:
- Created 3 years ago
- Comments:8
Top GitHub Comments
My apologies for the radio silence here; I’ve been super-busy, and put open-source on hold for a few days. Glad you managed to figure it out; filesystems in general tend to do weird things, which is why we abandoned comparing actual paths for inode checks.
@manidlou sure. On a file system doing automatic unicode normalization:
This is not a cosmetic fix, I read in a blog post recently someone having trouble storing then retrieving their file on S3 due to this kind of normalization being done by safari on file upload, then the database storing a different representation.
interesting reads: