У меня есть следующий маршрут в 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",