このエラーは実際にはどういう意味ですか? 「クロスデバイスリンク」とは何ですか?
このlibuvページ で言及されていますが、「クロスデバイスリンクは許可されていません」以外の詳細は提供していません。
LinuxのEXDEVに使用されます。
man rename
マンページを参照してください。
EXDEV oldpathとnewpathは、同じマウントされたファイルシステム上にありません。 (Linuxではファイルシステムを複数のポイントにマウントできますが、同じファイルシステムが両方にマウントされていても、rename()は異なるマウントポイント間では機能しません。)
このエラーは、WindowsにERROR_NOT_SAME_DEVICE
がある場合にも使用されます。以下を参照してください。
詳細については、以下を参照してください。
winerror.h 0x80070011
#define ERROR_NOT_SAME_DEVICE
システムはファイルを別のディスクドライブに移動できません。
「デバイス」(パーティション)の境界を越えてファイルの名前を変更しようとしているようです。
_/tmp
_は_/
_とは異なるパーティションだとしましょう。これは、これを行うことが許可されていないことを意味します。
_fs.rename('/tmp/myfile.txt', '/myfile.txt', ...)
_
(明らかにfs.renameSync()
にも当てはまります)
そうしたい場合は、まずファイルを新しい場所にコピーcopyしてから、古いファイルを削除する必要があります。 mv
などのモジュールがあり、これを支援します。
Linuxを使用している彼らのためだけに、これは古いパス、つまり/tmp
および新しいパスは、異なるパーティションまたはディスク上にあります。