Nodejs

2013-10-27 17 views
5

में एक्सप्रेस के साथ दिखाने के लिए index.html नहीं मिल सकता है, मैं अपना पहला एक्सप्रेस ऐप चलाने की कोशिश कर रहा हूं, लेकिन ऐसा लगता है कि मेरा वेबपृष्ठ दिखाना नहीं है। मैं निम्नलिखित कोड है:Nodejs

var fs = require("fs"); 
var config = JSON.parse(fs.readFileSync("files/config.json")); 
var host = config.host; 
var port = config.port; 
var express = require("express"); 

var app = express(); 

app.use(app.router); 
app.use(express.static(__dirname + "/public")); 

app.get("/", function(request, response){ 
    response.send("hello!"); 
}); 

app.listen(port, host); 
console.log("Listening on port" + port); 

यहाँ है मेरी निर्देशिका वृक्ष

nodejs/ 
    js/ 
     javascript.js 
    public/ 
     index.html 

मैं जानता हूँ कि सर्वर जब मैं चलाने क्योंकि मैं ब्राउज़र में मेरी "Hello!" प्रतिक्रिया मिल चल रहा है 127.0.0.01:1337

लेकिन जब मैं कोशिश करते हैं और वेबपेज 1227.0.0.1:1337/index.html टाइप करें, मैं Cannot GET /index.html ब्राउज़र में प्रदर्शित

तो मैं कर रहा हूँ मिल यह अनुमान लगा रहा है कि name के साथ get विधि में यह कुछ गलत है, लेकिन यह पता नहीं लगा सकता कि यह क्या है और इसे कैसे ठीक किया जाए।

उत्तर

10

आपका ऐप केवल आपके app.use(app.router) कॉल के समय सेट किए गए पृष्ठ अनुरोधों को रूट करेगा। तो अपने app.use कॉल निम्न में से एक होने के लिए पुन: व्यवस्थित:

एक्सप्रेस 3

app.use(express.static(__dirname + "/public")); 
app.use(app.router); 

__dirname निर्देशिका कि क्रियान्वित स्क्रिप्ट में रहता है, इसलिए क्योंकि उस js निर्देशिका public को एक सहकर्मी है कि में रहती है आपके कोड की आवश्यकता होगी:

app.use(express.static(__dirname + "/../public")); 
app.use(app.router); 

एक्सप्रेस 4

एक्सप्रेस 4 removes the need to manually do app.use(app.router)। एक्सप्रेस 4 के साथ आप बस की जरूरत है:

app.use(express.static(__dirname + "/../public"));

+0

एक्सप्रेस 4 उदाहरण मेरे लिए काम किया। 'app.use (app.router); 'एक त्रुटि देता है कि इसे बहिष्कृत किया गया है –