Error: ENOENT, no such file or directory Node JS
30,981
You need to check if the file exists with fs.existsSync(path)
before attempting to read it:
if (action !== '/' && fs.existsSync('.'+action)) {
var img = fs.readFileSync('.'+action);
res.writeHead(200, {'Content-Type': 'image/gif' });
res.end(img, 'binary');
} else {
Author by
writeToBhuwan
I am a nerd from India. Languages: Javascript, ASP.net,Node.js, C#
Updated on September 27, 2020Comments
-
writeToBhuwan over 3 years
I am trying to upoad and download images to the server via Node.js and I am using the below code:
var http = require('http'), path = require('path'), os = require('os'), fs= require('fs'),url = require('url'); var Busboy = require('busboy'); http.createServer(function(req, res) { if (req.method === 'POST') { var busboy = new Busboy({ headers: req.headers }); busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { var saveTo = ".\\Images\\"+filename; file.pipe(fs.createWriteStream(saveTo)); }); busboy.on('finish', function() { res.writeHead(200, { 'Connection': 'close' }); res.end("That's all folks!"); }); return req.pipe(busboy); } else{ var request = url.parse(req.url, true); console.log(request); var action = request.pathname; console.log(action); if (action !== '/') { var img = fs.readFileSync('.'+action); res.writeHead(200, {'Content-Type': 'image/gif' }); res.end(img, 'binary'); } else { res.writeHead(200, {'Content-Type': 'text/plain' }); res.end('Hello World \n'); } } res.writeHead(404); res.end(); }).listen(8082, function() { console.log('Listening for requests'); });
When I try to get the image from this server using HTTP GET at
http://localhost:8082/images/betty.jpg
, the request is fulfilled and the image is recieved but it also throws the error below:^ fs.js:438 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: ENOENT, no such file or directory 'D:\ImageUploadService\favicon.ico' at Object.fs.openSync (fs.js:438:18) at Object.fs.readFileSync (fs.js:289:15) at Server.<anonymous> (D:\ImageUploadService\service.js:27:20) at Server.emit (events.js:98:17) at HTTPParser.parser.onIncoming (http.js:2112:12) at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23 ) at Socket.socket.ondata (http.js:1970:22) at TCP.onread (net.js:527:27) 'D:\ImageUploadService\favicon.ico' at Object.fs.openSync (fs.js:438:18) at Object.fs.readFileSync (fs.js:289:15) at Server.<anonymous> (D:\ImageUploadService\service.js:27:20) at Server.emit (events.js:98:17) at HTTPParser.parser.onIncoming (http.js:2112:12) at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23 ) at Socket.socket.ondata (http.js:1970:22) at TCP.onread (net.js:527:27)
It seems that it is looking for some favicon.ico. What could be the problem??