less中间件不编译,得到404

我有一个node.js服务器与较less的中间件运行。 从我的理解,它即时编译并将css文件放在目标/相同(如果未指定)文件夹。

我的问题是我得到的CSS文件的获取请求404错误:

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

以下是我正在处理的内容:

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); }); 

博客-的layout.html

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

目录布局

 ROOT public less src web.js 

版本

  • less-middleware v0.2.1-beta
  • express v4.0.0

我试过了:

  • 使用app.use(lessMiddleware)({ src: __dirname + '/public' })); (显然是老办法)
  • 使用app.use(lessMiddleware(path.join(__dirname,'public','less')));
  • 移动app.use(express.static(path.join(__dirname,'public'))); 从web.js到router.js
  • 玩弄不同的path
  • 将router.js的内容移动到web.js
  • 使用指定目的地

这个:

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

       

网上收集的解决方案 "less中间件不编译,得到404"

问题是:

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

本来应该:

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

我读到:

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

与目录结构配对:

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

这导致我相信这个呼吁:

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

使请求承担/public/是父母,所以我被多余的调用/public/ /public/less/blog-reset.css

参考在这里find: express.jsless编译器:不能得到工作