2014-04-15 19 views
5

Ich habe einen node.js Server mit weniger Middleware ausgeführt. Von meinem Verständnis kompiliert es im laufenden Betrieb und legt die CSS-Datei im Ziel/gleichen (wenn nicht angegeben) Ordner.weniger-Middleware nicht kompilieren, bekommen 404

Mein Problem ist, ich bin immer einen 404-Fehler auf der GET-Anforderung für die CSS-Datei:

Err: GET http://webserver/public/less/blog-reset.css 404 (Not Found)

Hier ist das, was ich arbeite mit:

web. js

//requiring dependencies 
var express = require("express"); 
var logfmt = require("logfmt"); 
var lessMiddleware = require('less-middleware'); 
var hogan = require('hogan-express'); 
var path = require('path'); 

//all environments 
var app = module.exports = express(); 
var port = Number(process.env.PORT || 5000); 

app.use(logfmt.requestLogger()); 
app.use(lessMiddleware(path.join(__dirname,'public'))); 
app.use(express.static(path.join(__dirname,'public'))); 
app.set('layout',path.join(__dirname,'src','views','blog-layout')); 
app.enable('view cache'); 
app.engine('.html',hogan); 

//page routing called after env loads 
require('./src/router'); 

//listening port 
app.listen(port, function() { 
    console.log("Listening on " + port); 
}); 

Blog-layout.html

<head> 
     <title>EpiBlog</title> 
     <link href='/public/less/blog-reset.css' rel='stylesheet' type='text/css'/> 
</head> 
<body> 
     {{{yield}}} 
</body> 

Verzeichnisstruktur

ROOT 
    public 
     less 
    src 
    web.js 

Versionen

  • weniger Middleware v0.2.1-beta
  • express v4.0.0

Was ich versucht habe:

  • app.use(lessMiddleware)({ src: __dirname + '/public' })); mit (scheinbar die alte Art und Weise, es zu tun)
  • app.use(lessMiddleware(path.join(__dirname,'public','less')));
  • mit app.use(express.static(path.join(__dirname,'public'))); von web.js zu router.js bewegen
  • liebäugelt mit unterschiedlichen Pfade
  • Verschieben von Inhalten von router.js ins Web.js
  • Angabe des Ziel mit

dies:

app.use(lessMiddleware(path.join(__dirname, 'source', 'less'), { 
    dest: path.join(__dirname, 'public') 
})); 
+0

Ich habe die gleichen Probleme – Tirithen

+0

@Tirithen danke. Ich bin jetzt seit 2 Tagen dabei. Ich werde diese Frage weiter aktualisieren, während ich gehe. Wir werden dieses bekommen! <3 SO – 13ruce1337

Antwort

4

das Problem war:

<link href='/public/less/blog-reset.css' rel='stylesheet' type='text/css'/> 

hätte sein müssen:

<link href='/less/blog-reset.css' rel='stylesheet' type='text/css'/> 

i gelesen, dass:

link(rel='stylesheet', type='text/css', href='css/styles.css') 

wurde mit Verzeichnisstruktur gepaart:

myapp 
+-public 
    +-css 
    +-styles.less 

, die mich dazu gebracht, dass dieser Aufruf glauben:

app.use(express.static(path.join(__dirname,'public'))); 

die Anfrage annehmen macht /public/ ist die Mutter so wurde ich überflüssig Berufung zu sein /public/less/blog-reset.css

Referenz wurde hier gefunden: express.js less compiler: can not get work