Node.JS readFileSync() la fonction
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>
Je suis en train de stocker le chemin d'accès du fichier dans une variable, puis le nourrir ti readFileSync() de la fonction, mais cela me donne d'erreur suivant 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 je entrez le chemin d'accès "D:/nodejs/file_upload/view/index.html" dans la fonction directement puis il me montre la page dans le navigateur.
J'ai stocké l'index.html fichier dans le dossier de vue
Peut-être essayer
double possible de à l'Aide de Node.js j'obtiens le message "Erreur: EISDIR, lire"
Très probablement, vous êtes en train de lire
Si vous voulez servir des fichiers statiques, envisager d'utiliser une partie statique du module de comme saint ou service-statique.
vous avez raison.. Merci 🙂
fs.readdir()
et boucle à travers le tableau il les mains?double possible de à l'Aide de Node.js j'obtiens le message "Erreur: EISDIR, lire"
Très probablement, vous êtes en train de lire
D:/nodejs/file_upload/view
au lieu de D:/nodejs/file_upload/view/index.html
.Si vous voulez servir des fichiers statiques, envisager d'utiliser une partie statique du module de comme saint ou service-statique.
vous avez raison.. Merci 🙂
OriginalL'auteur Xylon | 2014-09-17
Vous devez vous connecter pour publier un commentaire.
EISDIR
erreur se produit lorsque vous essayez d'ouvrir un fichier, mais le chemin donné est un répertoire. Voir la question et la réponse: À l'aide de Node.js j'obtiens le message "Erreur: EISDIR, lire".De débogage je voudrais connecter à la console de la variable
directpath
et je suppose qu'il pointe vers un répertoire, pas un fichier. Correctement la définition de cette variable à la trajectoire devrait résoudre votre problème.OriginalL'auteur Tom Grant