Javascript 错误:无法在express+jade中查找视图

Javascript 错误:无法在express+jade中查找视图,javascript,express,pug,Javascript,Express,Pug,这是我的密码 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('obse

这是我的密码

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'); 
}
每当我尝试到达路径时,我都会收到以下错误: 错误:无法查找视图observable.jade。我也试着在没有.jade的情况下通过observable,但它给出了同样的错误。我的/views文件夹中同时有observable.jade和layout.jade


我错过了什么?谢谢

由于评论中的建议,我终于解决了这个问题。首先,我检查执行脚本的目录是否包含放置.jade文件的目录/视图。一开始我无法解决这个问题,因为我不知道这个脚本是从哪个脚本执行的,所以我在/express/lib/application.js的第493行放了一个console.logview。它打印出了包含执行脚本的根目录的视图对象,因此我将/views文件夹移到了那里,一切正常。

由于注释中的建议,我最终解决了问题。首先,我检查执行脚本的目录是否包含放置.jade文件的目录/视图。一开始我无法解决这个问题,因为我不知道这个脚本是从哪个脚本执行的,所以我在/express/lib/application.js的第493行放了一个console.logview。它打印出了包含执行脚本的根目录的视图对象,因此我将/views文件夹移到了那里,一切都正常了。

FWIW:我的视图位于相邻的目录中,即root/server、root/client,并且有这里描述的相同问题。我做的一件事与OP不同,那就是当我从服务器目录爬出时,在app.set中预先加上一个“/”;即:

这个:app.set'views',_dirname+'/../client/'

而不是:app.set'views',_dirname+'../client/'


非常感谢OP和Pickels

FWIW:我在相邻的目录(即root/server、root/client)中有我的视图,并且有这里描述的相同问题。我做的一件事与OP不同,那就是当我从服务器目录爬出时,在app.set中预先加上一个“/”;即:

这个:app.set'views',_dirname+'/../client/'

而不是:app.set'views',_dirname+'../client/'


非常感谢OP和Pickels

嗨。无法重现错误。如果您想快速猜测,express可能正在脚本运行的地方的目录_dirname+‘views’中查找,例如,如果脚本位于/herman/code/myapp/scripts中,它将在/herman/code/myapp/scripts/views中查找,而不是在/herman/code/myapp/views中。。。请发送更多数据。若要调试,请转到express/lib/application.js的第493行,并添加console.logview.path;这将记录你的应用程序试图到达的路径。多亏了这两者。的确,我的/view文件夹位于脚本的运行目录之外,但将其放在正确的目录中并不能解决问题。我尝试使用console.log,但打印出来时未定义。我能做什么?通过打印view而不是view.path,我可以注意到脚本确实是从一个完全不同的文件夹运行的。我终于设法解决了这个问题。谢谢有人应该把我的答案+赫尔曼的,并使它成为一个真正的答案,因为这可能会有助于其他人。嗨。无法重现错误。如果您想快速猜测,express可能正在脚本运行的地方的目录_dirname+‘views’中查找,例如,如果脚本位于/herman/code/myapp/scripts中,它将在/herman/code/myapp/scripts/views中查找,而不是在/herman/code/myapp/views中。。。请发送更多数据。若要调试,请转到express/lib/application.js的第493行,并添加console.logview.path;这将记录你的应用程序试图到达的路径。多亏了这两者。的确,我的/view文件夹位于脚本的运行目录之外,但将其放在正确的目录中并不能解决问题。我尝试使用console.log,但打印出来时未定义。我能做什么?通过打印view而不是view.path,我可以注意到脚本确实是从一个完全不同的文件夹运行的。我终于设法解决了这个问题。谢谢有人应该把我的答案+赫尔曼的,并使它成为一个真正的答案,因为这可能会有助于其他人。