0

ExpressJSアプリケーション設定ドキュメントviewsによると、ビューエンジンのディレクトリとして設定できるはずです。バグと思われる現象が発生しています。ディレクトリを検索する代わりにviews、express はディレクトリを検索しstaticます。そこにないので、明らかに失敗します。ビューを静的ディレクトリに移動してこれを確認したところ、エラーはなくなりました。

この Cloud9 プロジェクトのクローンを作成すると、このバグを確認できます。Cloud9 以外ではこのバグを確認できませんでした (利用可能な Linux ボックスがありません)。

ディレクトリ構造はシンプル

事業

|-client
  |-assets
  |-views
    |-index.html
|-server.js

ここにサーバー構成があります

var viewDir = __dirname + '/client/views/';
var assetDir = __dirname + '/client/assets/';

//Configure
app.configure(function() {
    app.set('views', viewDir);
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express['static'](assetDir));
    app.use(app.router);
});

app.get('/', function(req, res){        
    res.render('index');
});
4

2 に答える 2

4

エンジンを設定して、レンダリング方法を指定する必要があります。

エコーなど:

app.engine('.html', function (file, options, next) {
  fs.readFile(file, function (err, data) {
    if (err) {
      next(err);
    } else {
      next(null, data.toString());
    }
  });
});

大統領に就任させたい場合は、app.get('/' . . .前に置く必要もあります。app.use(express.static

ここで試すことができます: http://runnable.com/UWTRSNJq0z5OAADk

于 2013-04-10T02:52:05.403 に答える
2

Html ファイルは静的ファイルですが、ビュー内のファイルは jade や ejs などのテンプレート エンジンでレンダリングする必要があります。html ファイルをレンダリングする場合は、これらの質問を確認してください。

  1. 基本的な HTML ビューをレンダリングしますか?
  2. テンプレート エンジンなしでエクスプレスを使用する

テンプレート エンジンはビューを動的にレンダリングします。静的ページしかない場合は、必要ありません。ただし、動的コンテンツがある場合は、テンプレートを使用する必要があります。

于 2013-04-10T05:18:54.910 に答える