Fonction Node.JS readFileSync ()

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.