getHTTP(url) {
console.log('Sended');
return new Promise((resolve, reject) => {
this.http.get(url, {headers: httpOptions.headers, responseType: 'text'})
.subscribe((data) => {
console.log(data);
resolve(data);
}, (error) => {
reject(error);
console.log("Error", error);
});
});
}
Эта конструкция должна по логике отправлять запрос на сервер, в компоненте вызываю этот метод:
async getLeadList() {
await this.myHttp.getHTTP('/getLeadList');
}
На сервере ловлю запрос, и проверяю дошло ли обычным консол логом(Node.js),
router.get('/getLeadList', function(req, res) {
console.log(req.body);
db.Lead.find({}).then(function(leads) {
console.log(leads);
res.status(200).send(leads);
});
});
По итогу он не отправляет запрос на сервер, а пытается открыть передаваемый URL (http://localhost:4200/getLeadList).
HttpResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:3000/getLeadList", ok: true, …}
Почему он не отправляет запрос на сервер?
Я нашел проблему, она заключается в том, что мой nodejs обрабатывает все запросы и ссылается на корневую дирректорию ангуляр.
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, '/dist/cleanupCRM/index.html'));
});
Если ее убрать, то запрос доходит до сервера, но при обновлении страниц (при нажатии f5) он будет выдавать ошибку
Cannot GET /someurl
на любой странице.
Как найти в этом компромисс?
Я решил проблему, спасибо всем и моему потраченному времени (15 часов).
Проблема заключается в следующем. Не нужно вставлять заголовки для отправки get запроса, тк это добавляет в ответ ненужные строки кода, которые после нужно обрабатывать. У меня был обработчик любого get запроса на моем nodejs
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, '/dist/cleanupCRM/index.html'));
});
, который стоял до основного, который должен был обработать мой get(/getLeadList)
router.get('/getLeadList', function(req, res) {
console.log('Дошло');
db.Lead.find({}).then(function(leads) {
console.log(leads);
res.send(leads);
});
});
app.use('/', router);
Последовательность была такая:
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, '/dist/cleanupCRM/index.html'));
});
app.use('/', router);
В этой последовательности и была проблема. Необходимо поменять последовательность, где изначально обрабатываются мои запросы которые я обработал, а после обработка всех остальных.
app.use('/', router);
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, '/dist/cleanupCRM/index.html'));
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Увидел на сайте подключённые стили с названием site_globalcss@crc=91730608, такая же история с файлами js
Возможно ли сделать так чтобы у webpack точки входа совпадали с точками выхода без сторонних инструментов? Допустим у меня есть несколько файлов: