Примечание об этой проблеме : я заметил, что это происходит только при использовании определенных типов процесса сборки. Поскольку я использую angular-cli
, эта ошибка будет появляться каждый раз, когда я компилирую приложение, используя ng build
. Единственное исключение - когда я использую ng build --prod
. Я использую любой другой флаг, который использовал раньше, например --dev --aot
, тогда я получу ошибку, из-за которой не могу обновить страницу.
При использовании ng build --prod при обновлении на странице приложение будет работать должным образом. Но во время разработки это означает, что мне нужно запускать команду каждый раз, когда в код вносятся изменения, иначе я получу такие ошибки, как:
(void 0) is not a function
Я пытаюсь использовать модули Angular 5 с отложенной загрузкой, используя wamp-сервер, но у меня возникают проблемы при обновлении страницы с использованием отложенно загруженных модулей. Это моя конфигурация маршрутизации:
// Root routing config
export const mainRouting: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{
path: '',
component: PortalComponent,
canLoad: [ResolveGuard],
children: [
{ path: 'home', component: HomeComponent },
{
path: 'page',
loadChildren: './modules/page/page.module#PageModule'
},
{
path: 'user',
component: UserComponent,
children: [
{ path: 'profile', component: ProfileComponent },
{ path: 'config', component: ConfigComponent },
]
}
]
},
];
// LazyLoaded routing config
export const pageRouting: Routes = [
{
path: '',
children: [
{ path: 'about', component: PageAboutComponent },
{ path: 'condition', component: PageConditionComponent }
]
}
];
Все работает как положено. Я могу перейти на домашнюю страницу приложения, я могу получить доступ к загруженным ленивым маршрутам (page/about
и page/condition
), PageModule
загружается только по требованию и т. Д.
Проблема в том, что когда я нахожусь на URL /page/about
(например) и обновляю страницу, я получаю ошибку 404.
Если я нахожусь на URL /user/profile
и обновляю страницу, приложение загружается, как и ожидалось, поскольку user
не загружено, оно находится внутри основного модуля.
Я уже использую эту конфигурацию .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Но только в этом конкретном случае это не работает. Есть ли способ решить эту проблему?