2014-02-13 2 views
2

Node.js, Express 및 AngularJS를 사용하여 웹 앱을 개발 중입니다.다른 경로보다 먼저 자산을 처리하십시오.

public 폴더에서 프런트 엔드 자바 스크립트를 제공하고 있습니다 (예 : HTTP GET /lib/angular/angular.min.js은 아마 AngularJS JavaScript를 반환합니다. 나는 모든 요청을 브라우저의 각도 라우터에 의해 처리 얻을 원하는

그러나, 나는 다음과 같이 포괄 경로가 정의되어 있습니다

app.get('/*', function(req, res) { res.send('template.jade'); }); 

문제이 경로는보다 우선이다 정적 자산 라우팅이있는 경우에도 항상이 실행됩니다.

사용자 정의 경로가 전파되기 전에 Express에 정적 자산을 처리하도록 지시 할 수 있습니까? 아마도이 문제를 피할 수있는 영리한 방법이 있습니까? 다음과 같이

익스프레스 구성은 다음과 같습니다

// 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 경로를 제거 할 때 자산 구성이 작동하는지 확인할 수도 있습니다.

+0

정적 미들웨어를 선언 할 줄이 * 전에 *이 경로인지 확인하십시오. –

+0

익스프레스 정적 구성 *은 사용자 정의 라우트가 정의되기 전에 실행됩니다. – whirlwin

+0

정적 미들웨어가 정의 된 코드를 게시 할 수 있습니까? –

답변

4

정적 미들웨어는 app.router와 특정 경로 앞에 나타납니다.

// first 
app.use(express["static"](APP_ROOT + 'public')); 

// second 
app.use(app.router); 

// last 
app.get('/*',whatever); 
관련 문제