2016-12-18 4 views
0

Я использую Angular2 с машинописными текстами и systemjs.Angular2 - при смене маршрута я получаю ошибку systemJs для загрузки дочернего маршрута

Выпуск:

  • У меня есть путь, который я loadChildren для входа в систему под названием "".
  • Когда я посещаю URL-адрес, например. login адресная строка не меняется для входа в систему.
  • Он должен показать форму входа и изменить адресную строку в/login.
  • Это нормально работает при обслуживании с запуском npm.
  • Проблема возникает, когда я связываюсь с использованием npm run serve.prod для выпуска продукции с использованием SystemJS.
  • Грузы домашняя страница хорошо. При посещении страницы входа я получаю следующую консольную ошибку.
  • Эта проблема возникает только при использовании ленивой загрузки маршрутов.

Это сообщение консольный Я получаю ошибку:

enter image description here

Это мой Логин компонент:

import {Component, OnInit} from '@angular/core'; 
import {Router} from '@angular/router'; 

import {AuthService} from '../../services/authService/authService'; 
import {SocialService} from '../../services/socialService/socialService'; 
import {EmailService} from '../../services/emailService/emailService'; 
import {Environment} from '../../models/environment/environment'; 
import {User} from '../../models/user/user'; 

@Component({ 
    moduleId: module.id, 
    selector: 'LoginComponent', 
    templateUrl: 'login.component.html' 
}) 

export class LoginComponent implements OnInit { 
    router: Router; 
    authService:AuthService; 
    socialService: SocialService; 
    user: User; 
    error: string = null; 

    ngOnInit(): void { 
    window.scrollTo(0, 0); 
    } 

    constructor(router: Router, authService: AuthService, _socialService: SocialService, user: User){ 
     this.authService = authService; 
     this.socialService = _socialService; 
     this.user = user; 
     this.router = router; 
    } 

    logIn =() => { 
     this.authService.logIn(this.user).then((response) => { 
      if (response === false) { 
      this.error = "Incorrect login details"; 
      window.setTimeout(() => this.error = null, 4000); 
      } else { 
      this.router.navigate(['/dashboard']); 
      }    
     }); 
    } 
} 

Это мой Войти Модуль:

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

import { LoginComponent } from './login.component'; 
import { LoginRoutingModule } from './login.routes'; 
import { AuthService } from '../../services/authService/authService'; 
import { SocialService } from '../../services/socialService/socialService'; 
import { EmailService } from '../../services/emailService/emailService'; 
import { Environment } from '../../models/environment/environment'; 
import { User } from '../../models/user/user'; 

@NgModule({ 
    imports: [CommonModule, LoginRoutingModule, RouterModule, FormsModule], 
    declarations: [LoginComponent], 
    exports: [LoginComponent], 
    providers: [AuthService, User, SocialService, EmailService, Environment] 
}) 
export class LoginModule { } 

Это мой Логин Маршрут:

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

@NgModule({ 
    imports: [ 
    RouterModule.forChild([ 
     { 
     path: '', 
     component: LoginComponent, 
     data : { 
      metadata : { 
      title : 'Sign In', 
      override : true, 
      description : "Sign into your Pool Cover account using the email address or social media account you used to register. If you are having difficulties signing in, please navigate to the forgotten password page.", 
      keywords: "Sign in, login, access, sign in form, form" 
      } 
     } 
     } 
    ]) 
    ], 
    exports: [RouterModule] 
}) 
export class LoginRoutingModule { } 

Это мое приложение маршрут для входа в систему:

{path: 'login', loadChildren: 'app/components/login/login.module#LoginModule'}, 

Позвольте мне знать, если вам нужно больше файлов.

ответ

1

Обычно эта ошибка (неожиданный токен <) при попытке оценить файл JS означает, что вы отправили html-файл (возможно, ваш index.html) в ответ на запрос файла JS. Т.е., /app/components/login/login.module.js не был найден, но он обслуживал вашу страницу index.html или не нашел html.

Вы можете проверить это, открыв URL-адрес напрямую (щелкните правой кнопкой мыши, «открыть на новой вкладке»). Выясните, почему login.module.js не найден, и вы, вероятно, решите проблему. Сравните с местоположением файла в обслуживающей папке вашего веб-сервера - скорее всего, путь неверен.

Смежные вопросы