Използване на node.js и Jade, но index.jade не се показва

Използвам node.js и Jade и имам index.jade в моята папка public/views, но той не се показва, когато стартирам сървъра и отида на страницата, въпреки че всичко е наред, няма грешки и трябва да се рендира. Това е кодът в server.js:

console.log("Hello, world!");

var express = require("express")
  , app = express()
  , http = require("http").createServer(app);

app.set("ipaddr", "192.168.0.103");

app.set("port", 8080);

app.set("views", __dirname + "/views");

app.set("view engine", "jade");

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

app.use(express.bodyParser());

app.get("/", function(request, response) {

  response.send("Server is up and running");

  response.render("index");

});

http.listen(app.get("port"), app.get("ipaddr"), function() {
  console.log("Server up and running. Go to http://" + app.get("ipaddr") + ":" + app.get("port"));


});

И това е моят index.jade:

doctype 5
html
  head
    link(rel='stylesheet', href='http://fonts.googleapis.com/css?family=Open+Sans')
    link(rel='stylesheet', href='/bg/css/style.css')    
    title Super Awesome Chatroom
  body
    h1 Super Awesome Chatroom
    div
      div.inlineBlock
        span Your name:
          input(type="text", value="Anonymous")#name
        br
        form#messageForm
          textarea(rows="4", cols="50", placeholder="Share something!", maxlength=200)#outgoingMessage
          input(type="button", value="Share", disabled=true)#send
      div.inlineBlock.topAligned
        b Participants
        br
        div#participants
    div#messages

Всичко трябва да работи правилно, когато отида на xxx.xxx.xxx:8080, той просто показва „Сървърът е готов и работи“, но не показва index.jade. Всяка помощ се оценява.


person Boelens    schedule 10.11.2013    source източник


Отговори (1)


Както виждам, вие сте забравили да включите router междинния софтуер. Освен това във вашия манипулатор на маршрути вие връщате два отговора. Ако просто искате да изобразите изгледа на индекса, премахнете response.send():

var express = require("express")
  , app = express()
  , http = require("http").createServer(app);

app.set("ipaddr", "192.168.0.103");

app.set("port", 8080);

app.set("views", __dirname + "/views");

app.set("view engine", "jade");

app.use(express.bodyParser());

app.use(app.router);

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

app.get("/", function(request, response) {

  response.render("index");

});

http.listen(app.get("port"), app.get("ipaddr"), function() {
  console.log("Server up and running. Go to http://" + app.get("ipaddr") + ":" + app.get("port"));


});

Също така, винаги имайте предвид този много важен факт за express: редът, в който дефинирате вашия междинен софтуер, е критичен! Ето защо преместих static междинния софтуер след router, за да дам приоритет на router, тъй като това е междинният софтуер, който обработва обратните извиквания на маршрута, които дефинирате във вашето приложение.

person vladzam    schedule 10.11.2013