【发布时间】:2012-10-29 17:01:11
【问题描述】:
这是我的代码
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"。我也尝试在没有.jade 的情况下通过observable,但它给出了同样的错误。我的 /views 文件夹中有 observable.jade 和 layout.jade。
我错过了什么?谢谢!
【问题讨论】:
-
嗨。无法重现错误。如果您想快速猜测一下,也许 express 正在目录
__dirname + 'views'中进行查找,该目录是脚本运行的任何位置,例如,如果脚本位于/herman/code/myapp/scripts中,它将查找/herman/code/myapp/scripts/views,而不是 @ 987654330@...请发送更多数据。 -
要调试它,请转到 express/lib/application.js 的第 493 行并添加 console.log(view.path);这将记录您的应用尝试访问的路径。
-
感谢两位。确实,我的
/view文件夹在脚本的运行目录之外,但也将它放在正确的目录中并没有解决问题。我尝试使用console.log(),但它打印出undefined。我能做什么? -
通过打印
view而不是view.path我可以注意到脚本确实是从一个完全不同的文件夹运行的。我最终设法解决了这个问题。谢谢。 :) -
有人应该把我的答案 + 赫尔曼的答案变成一个真正的答案,因为这可能对其他人有帮助。
标签: javascript express pug