node - jade我无法发送静态html来查看

时间:2014-05-05 12:36:18

标签: node.js

我只是使用jade解析原始html文件(index.html)并发送到所有请求的响应。我在其中使用此功能:

var http = require('http'),
express  = require('express'),
path     = require('path'),
jade = require('jade'),
fs = require('fs'),
app      = express();

app.set('view engine', 'jade');
app.set('views', __dirname);
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);

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


app.all('/', function(req, res, next){

var html;

fs.readFile('index.html', function(err, data){
    if(err) throw err;
    var fn = jade.compile(data);
    html = fn({name:'Oleg'});
    console.log("data", html);
});

res.send(html);

});

http.createServer(app).listen(3000, function(){
console.log("i am listning to 3000!");
});

但是我没有在页面中得到任何结果。问题是什么,我在哪里错了,有人帮我吗?

我将“send(html)”移动到readFile块,我得到的是错误:

                   ^

错误:意外令牌“缩进”     在Object.Parser.parseExpr(D:\ app \ node_modules \ jade \ lib \ parser.js:237:15)     在Object.Parser.parse(D:\ app \ node_modules \ jade \ lib \ parser.js:130:25)     在解析时(D:\ app \ node_modules \ jade \ lib \ jade.js:100:62)     在Object.exports.compile(D:\ app \ node_modules \ jade \ lib \ jade.js:147:9)     在D:\ app \ app.js:23:17     在fs.js:266:14     在Object.oncomplete(fs.js:107:15)

我的javascript已停用。请不要误认为不合适的缩进。

2 个答案:

答案 0 :(得分:0)

该错误是由于jade文件造成的。确保它正确缩进。

答案 1 :(得分:0)

错误似乎来自jade模块。您可能想要检查视图模板。另外,res.send(html)必须在fs.readFile()的回调中:

fs.readFile('index.html', function(err, data){
   if(err) throw err;
   var fn = jade.compile(data);
   html = fn({name:'Oleg'});
   console.log("data", html);
   res.send(html);     // <==== move this from outside since
                       // fs.readFile is async.  html might
                       // not have value yet if it's outside
                       // of the callback
});