Node.JS readFileSync () - Funktion

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

index.html

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

Ich versuche, den Dateipfad in einer Variablen zu speichern und ihn dann an die Funktion readFileSync () weiterzuleiten, aber dies führt zu einem Fehler in der Konsole.

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)

aber wenn ich in der Funktion direkt den Pfad "D: /nodejs/file_upload/view/index.html" eingebe, wird mir die Seite im Browser angezeigt.

Ich habe die Datei index.html im Ansichtsordner gespeichert

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

Ich versuche, den Dateipfad in einer Variablen zu speichern und ihn dann an die Funktion readFileSync () weiterzuleiten, aber dies führt zu einem Fehler in der Konsole.

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)

aber wenn ich in der Funktion direkt den Pfad "D: /nodejs/file_upload/view/index.html" eingebe, wird mir die Seite im Browser angezeigt.

Ich habe die Datei index.html im Ansichtsordner gespeichert

Antworten auf die Frage(1)

Ihre Antwort auf die Frage