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; 

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> 

我试图将文件path存储在一个variables,然后提供readFileSync()函数,但这使我在控制台中出现错误。

 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) 

但是如果我直接在函数中inputpath“D:/nodejs/file_upload/view/index.html”,那么它会在浏览器中显示我的页面。

我将index.html文件存储在视图文件夹中

当您尝试打开文件时,会出现EISDIR错误,但给出的path是一个目录。 看到相关的问题和答案: 使用Node.js我得到,“错误:EISDIR,阅读” 。

要debugging这个,我会login到控制variablesdirectpath ,我会假设它指向一个目录,而不是一个文件。 正确设置这个variables到预定的path应该可以解决你的问题。