2

我无法让这个简单的 app.js 工作:提供静态文件,但不编译翡翠和样式文件。这里 __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);
4

1 回答 1

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

您的手写笔问题是自动分号插入怪物。您不能将“return”关键字单独放在一行上。您的compile函数正在返回undefined而不是手写笔实例。保持compilenib 文档中的格式,一切都很好。

于 2013-10-05T14:35:26.343 回答