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 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