我无法让这个简单的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);
答案 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文档,并且一切正常。