我只是使用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已停用。请不要误认为不合适的缩进。
答案 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
});