2015-09-14 2 views
0

В моем экспресс-приложении статические активы не будут использоваться на something/something.Экспресс-статические активы не работают глубоко, что-то/что-то

/** 
* Express configuration. 
*/ 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.engine('handlebars', exphbs({defaultLayout: 'main'})); 
app.set('view engine', 'handlebars'); 
// app.use(compress()); 
// app.use(assets({ 
// paths: ['public/css', 'public/js'] 
// })); 
app.use(logger('dev')); 
app.use(favicon(path.join(__dirname, 'public/favicon.png'))); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(expressValidator()); 
app.use(methodOverride()); 
app.use(cookieParser()); 
app.use(session({ 
    resave: true, 
    saveUninitialized: true, 
    secret: secrets.sessionSecret, 
    store: new MongoStore({ url: secrets.db, autoReconnect: true }) 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 
app.use(lusca({ 
    csrf: true, 
    xframe: 'SAMEORIGIN', 
    xssProtection: true 
})); 
app.use(function(req, res, next) { 
    res.locals.user = req.user; 
    next(); 
}); 
app.use(function(req, res, next) { 
    if (/api/i.test(req.path)) req.session.returnTo = req.path; 
    next(); 
}); 
app.use(express.static(__dirname + '/assets')); 

Тогда в моей основной раскладке

<link rel="stylesheet" href="css/main.css"> 

Домашняя страница работает, но не вложенные маршруты?

ответ

4

Ваша таблица стилей href является относительной ссылкой, что означает, что браузер будет интерпретироваться относительно пути к текущей веб-странице, поэтому он будет интерпретироваться по-разному для вложенного пути, чем веб-страница верхнего уровня. Вы, вероятно, нужно изменить ссылку, чтобы быть таким:

<link rel="stylesheet" href="/css/main.css"> 

Так что не интерпретируется одинаково, независимо от того, какой путь веб-страницы, вы поместите его в случается.

Учитывая ваш код express.static(), тогда этот путь "/css/main.css" будет искать как __dirname + "/assets/css/main.css".

+0

Ищет это. Просто сделал мой день. Спасибо! – kinxiel