Что означает ошибка "EXDEV: межсетевое соединение не разрешена"?

Что на самом деле означает эта ошибка? Что такое "ссылка между устройствами"?

Он упоминается на этой странице libuv, но не содержит никаких подробностей, кроме "ссылка между устройствами запрещена".

Ответ 1

Он используется для EXDEV в Linux:

Смотрите man-страницу man rename:

EXDEV oldpath и newpath не находятся в одной и той же смонтированной файловой системе.               (Linux позволяет монтировать файловую систему в нескольких точках,               но rename() не работает в разных точках монтирования, даже              если одна и та же файловая система смонтирована на обоих.)

Эта ошибка также используется при наличии ERROR_NOT_SAME_DEVICE в Windows, см.:

Для получения дополнительной информации см.:

winerror.h 0x80070011 #define ERROR_NOT_SAME_DEVICE Система не может переместить файл на другой диск.

Ответ 2

Похоже, вы пытаетесь переименовать файл через границы "устройства" (раздела).

Скажем, что /tmp - это другой раздел, чем /. Это означает, что вам не разрешено делать это:

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

(то же самое относится и к fs.renameSync(), очевидно)

Если вы хотите это сделать, вам нужно сначала скопировать файл в новое место, а затем удалить старый файл. Существуют модули, такие как mv, которые могут вам помочь.

Ответ 3

Просто для тех парней, которые используют Linux, это происходит, когда ваш старый путь, то есть /tmp, и новый путь находятся на разных разделах или дисках.