2017-10-28 104 views
0

在生成並上傳到生產服務器後,出現此錯誤。我在angular4上使用角度cli。當我將Route Guard添加到功能模塊時,所有這些都真正開始了。當我沒有守衛時,我恢復了,但錯誤仍然存​​在。當我在本地機器上運行ng服務時,我不會收到此錯誤。 這是我的應用程序模塊:Uncaught TypeError:無法在__extends讀取未定義的屬性'prototype'(Subscriber.js:5)

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 
import { HashLocationStrategy, LocationStrategy } from '@angular/common'; 

import { AppComponent } from './app.component'; 
import { LoginComponent } from './login/login.component'; 
import { RegisterComponent } from './register/register.component'; 

/* Routing Module */ 
import { AppRoutingModule } from './app-routing.module'; 

/* Authentication */ 
import {AuthenticateService} from './authenticate.service'; 
import {AuthGuard} from './auth.guard'; 


import {DashboardModule} from './dashboard/dashboard.module'; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    LoginComponent, 
    RegisterComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    DashboardModule, 
    AppRoutingModule 
    ], 
    providers: [ 
    { provide: LocationStrategy, useClass: HashLocationStrategy}, 
     AuthenticateService, 
     AuthGuard 
     ], 
     bootstrap: [AppComponent] 
    }) 
    export class AppModule { } 

我的身份驗證服務:

import { Injectable } from '@angular/core'; 
import {Response, Headers, Http, RequestOptionsArgs} from '@angular/http'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 

@Injectable() 
export class AuthenticateService { 

    baseUrl = 'myurl/public'; 
    constructor(private http: Http) { } 
    register(form) { 
     return this.http.post(`${this.baseUrl}/register`, form) 
     .map((response: Response) => { 
      const user = response.json(); 
      if (user.status) { 
      // store user details and jwt token in local storage to keep user logged in between page refreshes 
      localStorage.setItem('loggedUser', JSON.stringify(user)); 
      } 
      return user; 
     }) 
     .catch((error: any) => Observable.throw(error.json().error || {message: 'Server Error'})); 
    } 

    login(form): Observable<Response> { 
     const headersObj = new Headers(); 
     headersObj.set('Content-Type', 'application/json'); 

     const requestArg: RequestOptionsArgs = { headers: headersObj, method: 'POST' }; 
     // const telephone = form.telephone; 
     // const password = form.password; 
     return this.http.post(`${this.baseUrl}/login`, form, requestArg) 
     .map((response: Response) => { 
      const user = response.json(); 
      if (user.response.status) { 
      localStorage.setItem('loggedUser', JSON.stringify(user.response)); 
      } 
      return user.response; 
     }) 
     .catch((error: any) => Observable.throw(error.json().error || {message: 'Server Error'})); 
    } 

    logout() { 
    // remove user from local storage to log user out 
    localStorage.removeItem('loggedUser'); 
    } 

} 

我的路線後衛:

import { Injectable } from '@angular/core'; 
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 
// import {AuthenticateService} from './authenticate.service'; 

@Injectable() 
export class AuthGuard implements CanActivate { 
    constructor(private router: Router) { 
    } 

    canActivate(route: ActivatedRouteSnapshot, 
       state: RouterStateSnapshot): boolean { 
    if ((!localStorage.getItem('loggedUser'))) { 
     // not logged in so redirect to login page 
     this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }}); 
     return false; 
    } else { 
     return true; 
    } 
    } 
} 

應用路由模塊:

import { NgModule } from '@angular/core'; 
import {RouterModule, Routes} from '@angular/router'; 
import {LoginComponent} from './login/login.component'; 
import {RegisterComponent} from './register/register.component'; 


export const routes: Routes = [ 
    {path: '', redirectTo: 'dashboard', pathMatch: 'full'}, 
    {path: 'login', component: LoginComponent}, 
    {path: 'register', component: RegisterComponent}, 
]; 
@NgModule({ 
    imports: [ 
    RouterModule.forRoot(routes) 
    ], 
    exports: [ 
    RouterModule 
    ] 
}) 
export class AppRoutingModule { } 

守衛模塊:

import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { RouterModule } from '@angular/router'; 
import {FormsModule} from '@angular/forms'; 

import { DashboardRoutingModule } from './dashboard-routing.module'; 

import { DashboardComponent } from './dashboard.component'; 
import { DashboardHomeComponent } from './dashboard-home/dashboard-home.component'; 
import { UsersComponent } from './users/users.component'; 
import { TransactionsComponent } from './transactions/transactions.component'; 
import { UsersService } from './services/users.service'; 

@NgModule({ 
    imports: [ 
    CommonModule, 
    FormsModule, 
    RouterModule, 
    DashboardRoutingModule 
    ], 
    exports: [ DashboardComponent ], 
    declarations: [ DashboardComponent, DashboardHomeComponent, UsersComponent, TransactionsComponent], 
    providers: [ UsersService ] 
}) 
export class DashboardModule { } 

功能模塊組件:

import { NgModule } from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 

import {DashboardComponent} from './dashboard.component'; 
import {DashboardHomeComponent} from './dashboard-home/dashboard-home.component'; 
import {UsersComponent} from './users/users.component'; 
import {TransactionsComponent} from './transactions/transactions.component'; 
import {AuthGuard} from '../auth.guard'; 


export const dashboardRoutes: Routes = [ 
    { 
    path: 'dashboard', 
    component: DashboardComponent, 
    canActivate: [ AuthGuard ], 
    children: [ 
    {path: '', component: DashboardHomeComponent}, 
    {path: 'users', component: UsersComponent}, 
    {path: 'transactions', component: TransactionsComponent} 
    ]} 
    // {path: 'dashboard', component: DashboardComponent} 
]; 
@NgModule({ 
    imports: [ 
    RouterModule.forChild(dashboardRoutes) 
    ], 
    exports: [ 
    RouterModule 
    ], 
    declarations: [] 
}) 
export class DashboardRoutingModule { } 

回答

0

我發現錯誤,我進口的路由器模塊我的功能模塊,並在我的功能路由模塊。

相關問題