这是我的代码
var express = require('express');
var app = express();
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
exports.makeObservable = function(state, path, cb) {
app.get(path, function(req, res){
res.render('observable.jade', state);
//call callback with new user
cb(req);
});
app.listen('9999');
}
每当我尝试到达path
时,我都会收到以下错误:
Error: Failed to lookup view "observable.jade"
。我还尝试在没有observable
的情况下传递.jade
,但它也会出现同样的错误。我的/views
文件夹中有observable.jade和layout.jade。
我错过了什么?谢谢!
答案 0 :(得分:2)
由于评论中的建议,我终于解决了这个问题。首先,我检查了执行脚本的目录是否包含我放置/views
文件的目录.jade
。我一开始无法解决问题,因为我无法确定执行此脚本的位置,所以我在console.log(view)
的第493行添加/express/lib/application.js
。它打印出包含执行脚本的根的view
对象,因此我移动了/views
文件夹,一切正常。
答案 1 :(得分:2)
FWIW:我在相邻目录(即root / server,root / client)中有我的观点,并且遇到了与此处描述的相同的问题。我做的与OP不同的一件事是在登出服务器目录时在我的app.set中添加一个'/';即:
这个:app.set('views',__ dirname +' / ../ client /');
而不是:app.set('views',__ dirname +'.. / client /');
HTH
(感谢OP和Pickels的TON!)