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') }));
问题是:
<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编译器:不能得到工作