Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
146
rated 0 times [  150] [ 4]  / answers: 1 / hits: 39941  / 10 Years ago, wed, september 17, 2014, 12:00:00

index.js



var server = require(./server);
var router = require(./router);

server.start(router.route);


server.js



//Script to start a server

var http = require(http);
var url = require(url);
var fs = require(fs);

function start(route) {
function onRequest(request, response) {

var pathname = url.parse(request.url).pathname;

route(pathname, response, fs);

}

http.createServer(onRequest).listen(8888);
console.log(Server has started.);
}

exports.start = start;


router.js



function route(pathname, response, fs) {

var regex = new RegExp('^/view/?$');

var directpath = D:/nodejs/file_upload + pathname;

var voo = fs.readFileSync(directpath);

if(regex.test(pathname)){

response.writeHead(200, {Content-Type: text/html});
console.log(About to route a request for + pathname);
response.end(voo);

} else{

response.writeHead(404);
response.end(<br/>404, file not found);

}
}

exports.route = route;


index.html



<!DOCTYPE html>
<html>
<body>
<p>Hello My friend </p>
</body>
</html>


I'm trying to store the file path in a variable and then feed it ti readFileSync() function, but this gives me fllowing error in the console.



Error: EISDIR, illegal operation on a directory
at Object.fs.readSync (fs.js:487:19)
at Object.fs.readFileSync (fs.js:326:28)
at route (D:nodejsfile_uploadrouter.js:7:15)
at Server.onRequest (D:nodejsfile_uploadserver.js:15:6)
at Server.emit (events.js:98:17)
at HTTPParser.parser.onIncoming (http.js:2108:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23
)
at Socket.socket.ondata (http.js:1966:22)
at TCP.onread (net.js:527:27)


but if I enter the path D:/nodejs/file_upload/view/index.html in the function directly then it shows me the page in the browser.



I stored the index.html file in the view folder


More From » node.js

 Answers
3

EISDIR error occurs when you try to open a file, but the path given is a directory. See related question and answer: Using Node.js I get, "Error: EISDIR, read".



To debug this I would log to console the variable directpath and I would assume that it is pointing to a directory, not a file. Correctly setting this variable to the intended path should solve your problem.


[#69431] Sunday, September 14, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
blaisep

Total Points: 748
Total Questions: 95
Total Answers: 108

Location: Federated States of Micronesia
Member since Sun, May 16, 2021
3 Years ago
blaisep questions
Wed, Dec 16, 20, 00:00, 4 Years ago
Sun, Aug 16, 20, 00:00, 4 Years ago
Tue, Nov 12, 19, 00:00, 5 Years ago
Mon, Nov 11, 19, 00:00, 5 Years ago
;