web-dev-qa-db-fra.com

Que signifie l'erreur "EXDEV: liaison inter-appareils non autorisée"?

Que signifie réellement cette erreur? Qu'est-ce qu'un "lien inter-appareils"?

Il est mentionné sur cette page libuv mais il ne donne aucun détail au-delà de "lien inter-appareils non autorisé".

15
callum

Il est utilisé pour EXDEV sous Linux:

Voir man rename page de manuel:

EXDEV oldpath et newpath ne sont pas sur le même système de fichiers monté. (Linux permet à un système de fichiers d'être monté à plusieurs points, mais rename () ne fonctionne pas sur différents points de montage, même si le même système de fichiers est monté sur les deux.)

Cette erreur est également utilisée lorsqu'il y a ERROR_NOT_SAME_DEVICE sous Windows, voir:

Pour plus d'informations, voir:

winerror.h 0x80070011 #define ERROR_NOT_SAME_DEVICE Le système ne peut pas déplacer le fichier vers un autre lecteur de disque.

9
rsp

On dirait que vous essayez de renommer un fichier au-delà des limites de "périphérique" (partition).

Supposons que /tmp Est une partition différente de /. Cela signifie que vous n'êtes pas autorisé à le faire:

fs.rename('/tmp/myfile.txt', '/myfile.txt', ...)

(il en va de même pour fs.renameSync(), évidemment)

Si vous souhaitez le faire, vous devez d'abord copier le fichier vers son nouvel emplacement, puis supprimer l'ancien fichier. Il existe des modules, comme mv , qui peuvent vous aider avec cela.

15
robertklep

Juste pour les gars qui utilisent Linux, cela se produit lorsque votre ancien chemin, c'est-à-dire /tmp et le nouveau chemin se trouvent sur des partitions ou des disques différents.

0
Suleman Hasib