Я разрабатываю веб-приложение с помощью Node.js, Express и AngularJS.Служите активам перед другими маршрутами
Я обслуживаю свой интерфейсный JavaScript из папки public
, так, например, что HTTP GET /lib/angular/angular.min.js
предположительно вернет JavaScript AngularJS.
Однако, как я хочу, чтобы все запросы, чтобы получить обрабатывается угловым маршрутизатором в браузере, у меня есть всеохватывающий маршрут определяется следующим образом:
app.get('/*', function(req, res) { res.send('template.jade'); });
проблема является то, что этот маршрут переопределяет статическая маршрутизация активов, и в этом случае он всегда запускается, даже если запрашивается статический актив.
Есть ли способ сказать Экспресс для обработки статических активов до распространения пользовательских маршрутов? Есть ли какие-нибудь другие умные способы избежать этой проблемы?
конфигурацияЭкспресса выглядит следующим образом:
// Generated by CoffeeScript 1.7.1
(function() {
var ExpressConfig, crypto, express, path, pkg;
crypto = require('crypto');
express = require('express');
path = require('path');
pkg = require('../package');
ExpressConfig = (function() {
function ExpressConfig() {}
ExpressConfig.prototype.configure = function(ENV) {
var APP_ROOT, app;
APP_ROOT = path.join(__dirname, '../');
app = express();
app.set('port', pkg.config.port);
app.set('views', APP_ROOT + 'webapp');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser(crypto.randomBytes(20).toString('hex')));
app.use(express.session());
app.use(app.router);
app.use(require('stylus').middleware(APP_ROOT + 'public'));
app.use(express["static"](APP_ROOT + 'public'));
if (ENV === 'development') {
app.use(express.errorHandler());
}
return app;
};
return ExpressConfig;
})();
module.exports = ExpressConfig;
}).call(this);
//# sourceMappingURL=express-config.map
я могу проверить, что конфигурация выполняется до броских всех определений маршрута, как я проверил это, войдя в каждом месте, чтобы проверить заказ.
Я также могу проверить, что конфигурация активов работает при удалении маршрута catch-all.
Убедитесь, что линия для объявления статического промежуточного программного обеспечения является * до * этого маршрута. –
Статическая конфигурация Express * выполняется до того, как будет определен пользовательский маршрут. – whirlwin
Не могли бы вы отправить код, в котором определено статическое промежуточное ПО? –