J'ai créé un projet angulaire en utilisant angular-cli (version: 1.0.0-beta.28.3). J'exécute l'application dans l'environnement de développement en utilisant "npm start" et l'application fonctionne correctement dans "localhost: 4200". Maintenant, pour répliquer le déploiement de la production, je voulais exécuter l'application dans le WAMP local. J'ai donc lancé 'ng build -prod', copié les fichiers du dossier 'dist' dans le répertoire www/student de WAMP. Maintenant, quand je lance le projet avec WAMP, je finis par avoir cette erreur:
De toute évidence, l'application recherchait les fichiers JS requis au mauvais emplacement. J'ai fait des recherches et j'ai découvert que la racine du contexte - dans mon cas, "étudiant" devait être définie dans "base href ="/student "dans l'index.html. build -prod ', la base href a été réinitialisée sur "/". Une solution de contournement a été trouvée; taper "ng build -prod --base-href student" définit la base href à student.
Maintenant, j'ai rencontré un nouveau problème. La page par défaut était censée montrer le contenu de la route 'app-home', mais le lancement de l'application me donne:
Mais, les deux itinéraires/liens fonctionnent bien. Par exemple, en cliquant sur "À propos de nous", l'URL devient " http: // localhost: 82/student/student/app-about-us 'et affiche le contenu approprié.
Je suis presque sûr d'avoir un problème avec mon routage. Aidez-moi à définir le routage de manière à pouvoir exécuter l'application dans ' http: // localhost: 82/student ' avec des sous-URL ' http: // localhost: 82/student/student/app-home '(par défaut) et' http: // localhost: 82/student/student/app-about-us '
app.modules.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { AboutUsComponent } from './about-us/about-us.component';
import { CarComponent } from './car/car.component';
import { MenuComponent } from './menu.component';
import { CONST_ROUTING } from "app/app.routing";
@NgModule({
declarations: [
AppComponent,
HomeComponent,
AboutUsComponent,
CarComponent,
MenuComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
CONST_ROUTING
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.routing.ts
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from "app/home/home.component";
import { AboutUsComponent } from "app/about-us/about-us.component";
const MAINMENU_ROUTES: Routes = [
//full : makes sure the path is absolute path
{ path: '', redirectTo: '/app-home', pathMatch: 'full' },
{ path: 'app-home', component: HomeComponent },
{ path: 'app-about-us', component: AboutUsComponent }
];
export const CONST_ROUTING = RouterModule.forRoot(MAINMENU_ROUTES);
menu.component.html
<div class="row">
<div class="col-xs-12">
<ul class="nav nav-pills">
<li routerLinkActive="active"> <a [routerLink]="['/app-home']" >Home</a></li>
<li routerLinkActive="active"> <a [routerLink]="['/app-about-us']" >About Us</a></li>
</ul>
</div>
</div>
app.component.html
<app-menu></app-menu>
<router-outlet></router-outlet>
index.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ang2RouterTest</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root>Loading...</app-root>
</body>
</html>
Hôte standard - ng build --base-href http://www.yourwebsitehere.com/
. Assurez-vous de vous souvenir de la barre oblique finale
Hôte NodeJS - ng build
. Assurez-vous de bien configurer votre serveur NodeJS
Je pense que le problème est avec le chemin de contexte de votre application. Créez un service qui récupère le contexte d'application de votre application et ajoutez ce chemin de contexte à vos chemins de route, ce qui résoudrait le problème, je suppose.