2

Expressバージョンが最新です。

これは、別のapp.jsファイルによって使用されるapp.jsファイルです。

"use strict";
var express = require('express'), engine = require('ejs-locals');
var path = require('path'), map = require('../../app').map;
var register = require('./routes/register').register;   
var profile = require('./routes/profile').profile;      
var login = require('./routes/login').login;            

var app = module.exports = express();
app.configure(function() {
    app.engine('ejs', engine);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use('/assets', express.static(path.join(__dirname, 'assets')));
});

app.configure('development', function() {
    app.use(express.errorHandler());
});

app.map = map;
app.map(app, {
    '/seller': {
        '/password': {
            get: login.forgot, // Looks in the correct place /assets/css/... etc.
            '/forgot': {
                get: login.forgot // Looks in wrong place /seller/assets/... etc.
            },
            '/reset': {
                get: login.reset
            }
        }
    }
});

GEThttp://localhost:3000/seller/passwordが要求されると、Expressは正しい場所(つまり/ Assets / css / )で静的ファイルを探します。

しかし、GEThttp://localhost:3000/seller/password/forgotが要求されると、Expressは間違った場所、つまり/ Seller / asset/cssにある静的ファイルを探します。これは存在すらしていません。

これがマップ関数です。これは、Expressルートマップの例から抜粋したものです。

function route_map(app, a, route) {
    route = route || '';
    for (var key in a) {
        switch (typeof a[key]) {
            case 'object': // { '/path': { ... }}
            app.map(app, a[key], route + key);
            break;
            case 'function': // get: function(){ ... }
            app[key](route, a[key]);
            break;
        }
    }
}
4

1 に答える 1

3

間違ったファイルを要求するのは、エクスプレスではなくブラウザである必要があります。エクスプレスはサーバーです。したがって、クライアント側のhtmlが間違っている可能性があります。おそらく、URLが2レベルであり、cssリクエストに2つのアップディレクトリが../../assets/cssあるため、これは正しいですが、URLがそうである場合は、2レベル上に移動しようとします。そして今はになっているので、その後に追加します。/seller/password//seller/password/forgot/seller/assets/css

于 2013-03-02T20:50:41.253 に答える