2017-01-30 2 views
0

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

Я пытаюсь создать простой перехватчик, чтобы сделать это, однако он, кажется, ничего не возвращает.

Любые указатели о том, почему этот код не будет ничего, когда 404 приходит в печати (я подтвердил это, глядя на заголовок страницы):

enter image description here

И код:

.config(function($httpProvider) { 
    //Ignore this authInceptor is for saving my JWT's 
    $httpProvider.interceptors.push('authInterceptor'); 

    //This is the one I'm having issue with 
    $httpProvider.interceptors.push(function myErrorInterceptor($window, $location) { 
    return { 
     requestError: function(res){ 
     if (res.status === 404) { 
      console.log('You're In - Now do some more stuff') 
     } 
     return res; 
     } 
    } 
    }) 
}) 

UPDATE: Таким образом, в дополнение к этому, я понял, на моей стороне узла - у меня есть

//This section is to handle Angular HTML5Mode Urls 
//Have to rewrite all your links to entry point of your application (e.g. index.html) 
app.get('/*', function(req, res) { 
    res.sendFile(__dirname + '/site/index.html') 
}); 

Таким образом, еще одна проблема заключается в том, что app.get('/*' не будет использоваться, чтобы различать то, что разрешено в соответствии с Угловыми маршрутами, - так как я могу понять это? (Не хочу что-то массива, где я дублирую код)

+0

Это [Fiddle] (http://jsfiddle.net/LvhRC/103/), который может быть полезен. Также обратите внимание на отклоненные обещания возврата. –

+0

Если вы обработали 404/маршрутизацию всех запросов обратно в угловую точку входа (для режима HTML5) на стороне сервера/узла, в каком сценарии она выбрасывает 404? – Developer

ответ

0

Я считаю, что проблема в том, что вы подключаетесь к requestError вместо responseError. Попробуйте выполнить следующие действия:

.config(function($httpProvider) { 
    //Ignore this authInceptor is for saving my JWT's 
    $httpProvider.interceptors.push('authInterceptor'); 

    //This is the one I'm having issue with 
    $httpProvider.interceptors.push(function myErrorInterceptor($window, $location) { 
    return { 
     responseError: function(res){ 
     if (res.status === 404) { 
      console.log('You're In - Now do some more stuff') 
     } 
     return res; 
     } 
    } 
    }) 
}); 
+0

Пробовал это - ничего хорошего – userMod2

+0

Обновленный вопрос – userMod2

Смежные вопросы