2016-06-21 6 views
1

EDIT: Ich fand das Problem - mein Stylesheet war relativ verknüpft, wenn es eine absolute Verbindung hätte sein sollen.Node Express - mit mehr als einem Anfrage-Parameter bricht das CSS-Styling der HTML-Datei mein get-Handler sendet

Der Express-Handler in Frage soll aufgerufen werden, wenn jemand auf einen generierten Link klickt - es funktioniert, aber dann habe ich versucht, einen zweiten Anfrageparameter hinzuzufügen und jetzt scheint die gerenderte Seite kein CSS zu haben styling und wird einfach weiter geladen.

Zuerst verwende ich nur den Request-Parameter :creator. Hier ist der Code:

//djApp.get('/:creator/:hash', function (req, res) { 
    djApp.get('/:creator/', function (req, res) { 
    var path = req.params.creator.toLowerCase(); 
    for(booth in boothList) { 
     if (path == boothList[booth].creator.toLowerCase()) { 
     res.sendFile(__dirname+'/public/index.html', setTimeout(function() { 
      for (c in clients) { 
      if (clients[c].url && clients[c].url == path) { 
       clients[c].socket.emit('redirectUser', {'booth': boothList[booth]}); 
      } 
      } 
     }, 500)); 
     /*var hash = req.params.hash; 
     if (hashes.indexOf(hash) > -1) { 
      console.log("path is "+path+"\nhash is "+hash+"\nhashIndex is "+hashes.indexOf(hash)); 
      hashes.splice(hashes.indexOf(hash), 1); 
      res.sendFile(__dirname+'/public/index.html', setTimeout(function() { 
      for (c in clients) { 
       if (clients[c].url && clients[c].url == path) { 
       clients[c].socket.emit('redirectUser', {'booth': boothList[booth]}); 
       } 
      } 
      }, 500)); 
     }*/ 
     } 
    } 
    }); 
}); 

djApp.use('/', express.static(__dirname+'/public')); 

Dies ist die erzeugte URL, die der Handler wird:

http://localhost:3001/Aweeeezy 

Hier ist ein Screenshot zeigt, dass die HTML gesendet und ordnungsgemäß Links die CSS und JS wie erwartet: enter image description here

Als nächstes kommentiere ich die app.get-Zeile mit dem einzelnen Anfrageparameter und dem Logikblock aus, der die HTML-Datei sendet und entkomme dann die app.get-Zeile mit zwei Anfrageparametern und einem identischen Logikblock zum Senden der HTML-Datei. nur ich t befindet sich innerhalb einer if-Bedingung, die mit dem zusätzlichen Anforderungsparameter verknüpft ist. Hier ist der Code:

//djApp.get('/:creator/', function (req, res) { 
    djApp.get('/:creator/:hash', function (req, res) { 
    var path = req.params.creator.toLowerCase(); 
    for(booth in boothList) { 
     if (path == boothList[booth].creator.toLowerCase()) { 
     var hash = req.params.hash; 
     if (hashes.indexOf(hash) > -1) { 
      console.log("path is "+path+"\nhash is "+hash+"\nhashIndex is "+hashes.indexOf(hash)); 
      hashes.splice(hashes.indexOf(hash), 1); 
      res.sendFile(__dirname+'/public/index.html', setTimeout(function() { 
      for (c in clients) { 
       if (clients[c].url && clients[c].url == path) { 
       clients[c].socket.emit('redirectUser', {'booth': boothList[booth]}); 
       } 
      } 
      }, 500)); 
      /*res.sendFile(__dirname+'/public/index.html', setTimeout(function() { 
      for (c in clients) { 
       if (clients[c].url && clients[c].url == path) { 
       clients[c].socket.emit('redirectUser', {'booth': boothList[booth]}); 
       } 
      } 
      }, 500));*/ 
     } 
     } 
    } 
    }); 
}); 

djApp.use('/', express.static(__dirname+'/public')); 

Dies ist die erzeugte URL, die der Handler wird:

http://localhost:3001/Aweeeezy/a35969699812c71ef8fde58cafebe644dd18ed7b 

Ausgang ist:

path is aweeeezy 
hash is a35969699812c71ef8fde58cafebe644dd18ed7b 
hashIndex is 0 

So kann man sehen, dass alles funktioniert wie innerhalb der erwarteten Handler - zumindest bis zu dem Code, der mit dem Arbeitsfall identisch ist, aber mein Browser rendert die Seite jetzt so: enter image description here

Worauf es wirklich ankommt, ist der Unterschied von /:creator zu in der Request-Handler-URL - aber jedes Beispiel, das ich für die Verwendung mehrerer Parameter sehe, macht, was ich versuche zu tun.

Was ist los ?!

+0

Haben Sie irgendeine Lösung gefunden? Das Gleiche passiert mit mir? @aweeeezy – Abhilash

Antwort

0

Ändern Sie den Link zum Stylesheet als absoluten Link.