1

これは私が持っているコードです

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が、同じエラーが発生します。フォルダにobservable.jadeとlayout.jadeの両方があり/viewsます。

私は何が欠けていますか?ありがとう!

4

2 に答える 2

2

コメントの提案のおかげで、私はついに問題を解決しました。まず、スクリプトの実行元のディレクトリに、ファイル/viewsを配置したディレクトリが含まれているかどうかを確認しました。.jadeこのスクリプトが実行された場所がわからなかったため、最初は問題を解決できなかったので、console.log(view)493行目にを入れました/express/lib/application.jsviewスクリプトが実行されたルートを含むオブジェクトが出力されたので、そこにフォルダーを移動すると/views、すべてが機能しました。

于 2012-10-31T10:05:36.203 に答える
2

FWIW: 隣接するディレクトリ (つまり、ルート/サーバー、ルート/クライアント) にビューがあり、ここで説明されているのと同じ問題がありました。私が OP とは異なる方法で行ったことの 1 つは、サーバー ディレクトリから出るときに app.set の先頭に「/」を追加することでした。すなわち:

これ: app.set('views', __dirname + ' / ../client/');

代わりに: app.set('views', __dirname + '../client/');

HTH

(OPとピッケルにTONに感謝します!)

于 2013-06-04T21:57:27.683 に答える