What does the "EXDEV: cross-device link not permitted" error mean?

callum picture callum · Apr 4, 2017 · Viewed 28.8k times · Source

What does this error actually mean? What is a "cross-device link"?

It is mentioned on this libuv page but it doesn't give any details beyond "cross-device link not permitted".

Answer

robertklep picture robertklep · Apr 4, 2017

It sounds like you're trying to rename a file across "device" (partition) boundaries.

Say that /tmp is a different partition than /. That means that you're not allowed to do this:

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

(the same applies to fs.renameSync() as well, obviously)

If you want to do that, you need to first copy the file to its new location, and subsequently remove the old file. There are modules, like mv, that can help you with that.