express + stylus + jade,没有编译

时间:2013-10-05 12:54:05

标签: node.js express pug stylus

我无法让这个简单的app.js工作:提供静态文件,但不编译jade和styl文件。 这里是__dirname ls:

damianomacbook:www damiano$ ls
app.jade    app.js      app.styl    config.xml  johnd.jpg

.jade和.styl文件正常,简单地提供。 这里卷曲css和html文件(中间件函数应该在运行中生成)时会发生什么:

damianomacbook:www damiano$ curl localhost:8080/app.css
curl: (52) Empty reply from server
damianomacbook:www damiano$ curl localhost:8080/app.html
Cannot GET /app.html

缺少什么?

有罪代码:

var express = require('express');
var stylus = require('stylus');
var nib = require('nib');

var app = express();
function compile(str, path) {
   return 
      stylus(str)
      .set('filename', path)
      .use(nib());
}

app.use(express.logger('dev'));

app.set('views', __dirname);
app.set('view engine', 'jade');

app.use(stylus.middleware({ 
    src: __dirname,
    compile: compile
}));

app.use(express.static(__dirname));

app.listen(8080);

1 个答案:

答案 0 :(得分:1)

您的GET /app.html失败,因为提供HTML页面是使用快速路由器而非中间件完成的,并且您没有定义任何路由。静态中间件不会转换任何内容(因此名称),因此除非磁盘上有实际的/app.html文件,否则它不会提供app.html。要让/app.html正常工作,请添加:

app.get('/app.html', function (req, res) { res.render('app');});
//or you probably want app.get('/', ...if you want this to be your home page
//you probably also don't want/need ".html" in your URLs as this has fallen out of style

你的手写笔问题是automatic semicolon insertion怪物。您不能将“return”关键字单独放在一行上。您的compile函数正在返回undefined而不是手写笔实例。保持compile格式化为nib文档,并且一切正常。