node.js fs rename ENOENT

I am trying to write a handler for file uploads in node.js using express framework. Following is the raw skeleton of it.

exports.handleUpload = function(req,res){

var temp_path = req.files.doc.path,
    target_path = './uploads/' + req.files.doc.name ;


fs.rename(temp_path, target_path, function(err){

    if(err){
        console.log(err);
    }

    fs.unlink(temp_path, function(){
        if(err){
            console.log(err)

        }

    })

    //Do stuff  

})

}

However I get an error in the execution of renmae function occassionally(not always), especially with uploads of large files.

This is what the console caches from the error code

{ [Error: ENOENT, rename '/tmp/16368-19661hu.pptx'] errno: 34, code: 'ENOENT', path: '/tmp/16368-19661hu.pptx' }

From : https://github.com/joyent/node/blob/master/deps/uv/include/uv.h

XX(ENOENT, "no such file or directory") 

The uploads/ directory does exist and permissions isn't an issue. Had it been so, it would have been failing each time, but it does not.

You're using the /tmp directory. The OS might be deleting the files since it can do so for the /tmp directory, hence the "randomness" of the issue. Use fs.exists before doing your other operations.