Мое приложение стека MEAN возвращает необработанный json в браузер вместо моего HTML, когда я обновляю страницу. Если я получаю доступ к страницам с помощью моих перенаправленных кнопок или иду вперед и назад, это нормально. Но если я введу URL-адрес вручную или обновлю страницу, на которой я работаю, браузер покажет мои необработанные данные.
Я не получаю ошибок в консоли или на сервере.
Пример метода в моем сервисе:
getSingleCompany(category, company) {
return this.http.get(`${this.BASE_URL}/${category}/${company}`)
.map((res) => res.json())
.catch((err) => {
return Observable.throw(err);
});
}
Маршруты:
export const routes: Routes = [
{ path: '', component: CategoriesComponent },
{ path: 'category/men-apparel', component: MenApparelComponent },
{ path: 'category/womens-apparel', component: WomenApparelComponent },
{ path: 'profile/:id', component: ProfileComponent, canActivate: [AuthService] },
{ path: ':category/:company', component: CompanyProfileComponent },
];
Сервер:
//Get our API routes
const api = require("./server/routes/api");
const auth = require("./server/routes/auth");
Каждый маршрут, кроме моих маршрутов авторизации (для входа в систему и регистрации) находится в моем API
app.use('/', api);
app.use('/', auth);
Все компилируется в мою папку dist, содержащую index.html
//Catch all other routes and return the index file.
//Catch-all route MUST come after all other API routes have been defined.
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
});
Пример маршрута:
//Retrieve all the reviews for the company and populate
router.get('/:category/:company', (req, res, next) => {
Company.findOne({ "companyName": req.params.company}, (err, company) => {
// console.log("printing all reviews", company.reviews);
if(!company) {
res.status(400).json({ message: "Can't find the company you're looking for at the moment." });
} else {
Review.find({'_id': { $in: company.reviews }})
.populate("createdBy")
.exec((err, review) => {
if (err) {
next(err);
return;
} else {
res.json({
message: "Retrieving your company",
company: company,
reviews: review
});
console.log("returning review", review);
}
});
}
});
});
Я чувствую, что упускаю что-то очевидное. Пробовал разные вещи, но не смог понять, что я делаю не так. Хотите знать, могут ли какие-нибудь опытные ребята из Angular / Node понять, что я делаю неправильно.
Спасибо, что взглянули.