2014-09-17 3 views
11

index.jsNode.js readFileSync() फ़ंक्शन

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> 

मैं एक चर में फ़ाइल पथ को स्टोर करने की कोशिश कर रहा हूं और फिर इसे ti 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) 

लेकिन अगर मैं पथ दर्ज: सीधे तो समारोह में 'डी /nodejs/file_upload/view/index.html "यह मेरे ब्राउज़र में पृष्ठ दिखाती है।

मैं दृश्य फ़ोल्डर में index.html फ़ाइल

+0

शायद 'fs.readdir()' और लूप को उस सरणी के माध्यम से वापस करने का प्रयास करें? – CaffeineAddiction

+3

संभावित डुप्लिकेट [नोड.जेएस का उपयोग करके मुझे मिलता है, "त्रुटि: EISDIR, पढ़ें"] (http://stackoverflow.com/questions/20417118/using-node-js-i-get-error-eisdir-read) –

+3

सबसे अधिक संभावना है, आप 'डी:/nodejs/file_upload/view' को' D:/nodejs/file_upload/view/index.html' के बजाय पढ़ने की कोशिश कर रहे हैं। –

उत्तर

52

EISDIR त्रुटि तब होती है जब आप एक फ़ाइल खोलने का प्रयास संग्रहीत है, लेकिन पथ दिया एक निर्देशिका है। संबंधित प्रश्न और उत्तर देखें: Using Node.js I get, "Error: EISDIR, read"

इसे डीबग करने के लिए मैं परिवर्तनीय directpath कंसोल करने के लिए लॉग इन करूंगा और मुझे लगता है कि यह एक निर्देशिका को इंगित कर रहा है, फाइल नहीं। इस चर को सही पथ पर सही तरीके से सेट करना आपकी समस्या का समाधान करना चाहिए।

संबंधित मुद्दे