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;
routeur.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("
404, file not found"); } } exports.route = route;
index.html
Hello My friend
J’essaie de stocker le chemin du fichier dans une variable, puis de l’alimenter à la fonction readFileSync (), mais cela me donne une erreur fllowing dans la 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:\nodejs\file_upload\router.js:7:15) at Server.onRequest (D:\nodejs\file_upload\server.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)
mais si j’entre le chemin “D: /nodejs/file_upload/view/index.html” dans la fonction directement, alors il me montre la page dans le navigateur.
J’ai stocké le fichier index.html dans le dossier de vue
EISDIR
erreur EISDIR
se produit lorsque vous essayez d’ouvrir un fichier, mais le chemin indiqué est un répertoire. Voir la question et la réponse correspondantes: À l’aide de Node.js, j’obtiens le message “Erreur: EISDIR, lisez” .
Pour déboguer cela, je me connecterais pour console la variable directpath
et je supposerais qu’elle pointe vers un répertoire, pas un fichier. Définir correctement cette variable sur le chemin prévu devrait résoudre votre problème.