0

У меня есть следующий маршрут в angular2 приложения:Browser-синхронизация и облегченный-сервер: HTTP-прокси-промежуточный слой перехватывает несуществующие URLs

/** Application routes */ 
const routes: Routes = [ 
    { path: '', component: LandingComponent }, 
    { path: 'about', component: AboutUsComponent },  
    // catch all path, should go after all defined paths 
    { path: '**', component: PageNotFoundComponent } 
]; 

Недавно мне пришлось добавить bs-config.js следующее содержание:

var proxy = require('http-proxy-middleware'); 

// note: serving from both ./dist and ./node_modules 
// TODO: https? 

// redirect all /api calls to the backend 
var apiProxy = proxy('/api', { 
    target: 'http://localhost:8080', 
    pathRewrite: { 
     '^/api' : '', // rewrite path 
    }, 
    changeOrigin: true // for vhosted sites 
}); 

module.exports = { 
    files : "./dist/**/*.{js, html, css}", 
    server: { 
     baseDir : ["./dist","node_modules"], 
     middleware: { 
      1: apiProxy 
     }, 
     https : false 
    }, 
    logLevel: "debug" 
}; 

Все работает нормально, за исключением доступа к 404 страницам, то есть, если пользователь вводит неправильную ссылку, я просто вижу «Не могу GET/url» и ничего интересного в журналах. Если удалить только эти три линии:

 middleware: { 
      1: apiProxy 
     }, 

Он снова начинает работать, и я получаю страницу 404 на http://myapp/some/broken/url.

Но мне нужен прокси-сервер для родственных материалов. Почему это мешает регулярным маршрутам api, хотя он должен проксировать только «api», как URL-адреса?

P.s. Я использую:

"http-proxy-middleware": "^0.17.2", 
"lite-server": "^2.2.2", 

ответ

0

Как-то установил ее, изменив значение параметра:

middleware: { 
     1: apiProxy, 
     2: require('connect-history-api-fallback')({index: '/index.html', verbose: false}) 
    },