2017-04-27 13 views
0

나는 각도 1과 익스프레스를 사용하여 인증 학습을하고 있습니다. 테스트 목적으로 백엔드를 설치했고 현재 프론트 엔드에서 작업하고 있습니다. 기본 경로를 설정했습니다. 익스프레스 + 각도 라우팅 버그

내 프론트 엔드의 핵심입니다 :

function router($stateProvider, $urlRouterProvider, $locationProvider) { 
    $urlRouterProvider.otherwise('/'); 

    $stateProvider 
    .state('home', { 
     url: '/', 
     templateUrl: 'views/home/', 
     controller: 'mainController' 
    }) 
    .state('login', { 
     url: '/login', 
     templateUrl: 'views/login/', 
     controller: 'loginController' 
    }); 

    $locationProvider.html5Mode(true); 
} 

그리고 여기에 해당 될 것이다 백 엔드에있는 루트입니다

app.use(express.static(path.join(__dirname, 'public'))); 

app.get('/', function(req,res){ 
    res.sendFile(path.join(__dirname, 'public/', 'index.html')); 
}); 

내가 가진 유일한 경로 내입니다 API는 상수 apiRouter을 사용하고 해당 경로에 /api/을 삽입합니다.

이제 브라우저에서 직접 경로에 액세스하려고하면 문제가 발생합니다. 나는 localhost : 8080/login에 nagivate했다. 오류 Cannot GET /login을 얻지 만, 내 인덱스 페이지에 ui-sref를 사용하면 잘 작동하는 것처럼 보인다.

아이디어가 있으십니까?

답변

0

그래서 내 문제가 무엇인지 알아 냈습니다. 내 루트 경로 후

내 서버 파일에 문을 GET, 나는 다음과 같은 코드를 추가해야합니다

무슨 일이 일어 났는지
app.get('*', function(req,res){ 
    res.sendFile(path.join(__dirname, 'public/', 'index.html')); 
}); 

, 고속 내가 정의했던 /login 경로를 찾을려고된다. 문제는 익스프레스가 아닌 앵글로 경로를 처리해야하기 때문에 익스프레스가 명시 적으로 처리하는 방법을 알지 못하는 어떤 경로에 대해서도 '*'은 모든 것을 포착하는 것이므로 그 책임을 index.html로 넘깁니다. 파일.