12

CODE:

fs.unlink("/public/images/uploads/"+req.file.filename, (err) => {
        if (err) {
            console.log("failed to delete local image:"+err);
        } else {
            console.log('successfully deleted local image');                                
        }
});

ERROR MESSAGE IN CONSOLE/TERMINAL:

failed to delete local image:Error: ENOENT: no such file or directory, unlink '/public/images/uploads/ed6d810405e42d0dfd03d7668e356db3'

SITUATION

I must have specified the wrong path. I don't understand why it would be wrong, the "public" folder is at the same level as the "app.js" file. The "upload.js" is in a folder called "routes" which is at the same level as "app.js".

And I have specified a route "/public" to my public folder in my app.js:

//Static Folder
app.use("/public",express.static(path.join(__dirname, "/public")));

QUESTION:

What have I done wrong ?

Coder1000
  • 4,071
  • 9
  • 35
  • 84

3 Answers3

25

I bet you want to delete file inside project directory. Try with this (dot before "/"):

fs.unlink("./public/images/uploads/"+req.file.filename, (err) => {
        if (err) {
            console.log("failed to delete local image:"+err);
        } else {
            console.log('successfully deleted local image');                                
        }
});
mitch
  • 2,235
  • 3
  • 27
  • 46
1

You missed a part of the path. What you're showing is not enough, but it can be fixed in the following way:

For example, the path I got of a file is the following:

 'C:\001-Training\MEANCourse\http:\localhost:3000\images\1-1571080310351.jpeg'

But actually the path is

 'C:\001-Training\MEANCourse\http:\localhost:3000\backend\images\1-1571080310351.jpeg'

Here, the "MEANCourse" is my project name, and "backend" is the top-level folder name as "src", but when the path was produced automatically, the top-level folder was ignored.

So I added "backend" to the path, and it started to work.

You have to find out what part is missing in your case.

William Hou
  • 1,251
  • 14
  • 17
1

You do not need to use c:\ for you may not be in the windows environment. Also, you may be finally executing this in cloud etc. Instead, use a relative directory by using __dirname. Like, if using backtick, do ${__dirname} then add the rest of the directory, relative to the javascript file your code is in.