Угловое обновление с 6 до 7, приводящее к ошибке отсутствующего загрузочного модуля с использованием концепции отложенной загрузки - PullRequest
0 голосов
/ 09 ноября 2018

ОБНОВЛЕНИЕ На мой вопрос

Я добавил "BaseUrl": "./", к tsconfig.app.json и получил следующую ошибку:

ошибка TS5023: неизвестная опция компилятора 'BaseUrl'.

Я думаю, они имеют в виду tsconfig.json, а baseUrl уже добавлен.

Конец обновления

Я обновил свой угловой проект до углового 7 , используя следующие команды:

npm install @angular/animations@latest @angular/common@latest
    @angular/compiler@latest @angular/core@latest @angular/forms@latest 
    @angular/http@latest @angular/platform-browser@latest 
    @angular/platform-browser-dynamic@latest 
    @angular/platform-server@latest 
    @angular/router@latest --save

И

npm install @angular-devkit/build-angular@latest 
@angular/compiler-cli@latest 
@angular/cli@latest 
@angular/language-service@latest --save-dev

И

npm install core-js@latest zone.js@latest --save

И

npm install @types/jasmine@latest @types/node@latest 
codelyzer@latest karma@latest karma-chrome-launcher@latest 
karma-cli@latest karma-jasmine@latest 
karma-jasmine-html-reporter@latest 
jasmine-core@latest jasmine-spec-reporter@latest 
protractor@latest tslint@latest --save-dev

И

npm install typescript@latest --save-dev
npm install rxjs@latest rxjs-compat@latest --save

npm install rxjs-tslint@latest --save-dev

Получается package.json:

{
  "name": "angular",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@agm/core": "^1.0.0-beta.3",
    "@angular/animations": "^7.0.3",
    "@angular/cdk": "^7.0.3",
    "@angular/common": "^7.0.3",
    "@angular/compiler": "^7.0.3",
    "@angular/core": "^7.0.3",
    "@angular/flex-layout": "^7.0.0-beta.19",
    "@angular/forms": "^7.0.3",
    "@angular/http": "^7.0.3",
    "@angular/material": "^7.0.3",
    "@angular/material-moment-adapter": "^7.0.3",
    "@angular/platform-browser": "^7.0.3",
    "@angular/platform-browser-dynamic": "^7.0.3",
    "@angular/platform-server": "^7.0.3",
    "@angular/router": "^7.0.3",
    "angularx-qrcode": "^1.2.4",
    "bootstrap": "^4.1.3",
    "core-js": "^2.5.7",
    "font-awesome": "^4.7.0",
    "hammerjs": "^2.0.8",
    "html2canvas": "^1.0.0-alpha.12",
    "jspdf": "^1.4.1",
    "moment": "^2.22.2",
    "rxjs": "^6.3.3",
    "rxjs-compat": "^6.3.3",
    "tether": "^1.4.4",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.10.5",
    "@angular/cli": "^7.0.5",
    "@angular/compiler-cli": "^7.0.3",
    "@angular/language-service": "^7.0.3",
    "@types/jasmine": "^2.8.11",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^10.12.3",
    "codelyzer": "^4.5.0",
    "jasmine-core": "^3.3.0",
    "jasmine-spec-reporter": "^4.2.1",
    "karma": "^3.1.1",
    "karma-chrome-launcher": "^2.2.0",
    "karma-cli": "^1.0.1",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "^1.1.2",
    "karma-jasmine-html-reporter": "^1.4.0",
    "protractor": "^5.4.1",
    "rxjs-tslint": "^0.1.5",
    "ts-node": "~5.0.1",
    "tslint": "^5.11.0",
    "typescript": "^3.1.6",
    "webpack": "^4.25.1"
  }
}

Вкл. ng serve --port=8000 Я получаю следующую ошибку:

core.js: 12584 ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: не удается найти module '../app/dashboard/dashboard.module' Ошибка: не удается найти модуль '../App/dashboard/dashboard.module' в ленивом объекте пространства имен $ _lazy_route_resource: 5 в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invoke (zone.js: 388) в Object.onInvoke (core.js: 14143) на

Он работал, когда я использовал Angular 6, и я получил его только после обновления.

Я попробовал решение , упомянутое на github:

В сущности, есть три возможных решения:

a) Использование относительного пути loadChildren: '. / ...

b) Использование абсолютного пути, начинающегося с loadChildren: 'src / app /...

в) tsconfig.app.json -> BaseUrl: "./"

И ни один из них не работал для меня.

Вот мой файл маршрутизации при запуске:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from './login/login.component';
import { ForgotPasswordComponent } from './forgot-password/forgot-password.component';

const routes: Routes = [
  {
    path: 'login',
    component: LoginComponent
  },
  {
    path:'',
    component: LoginComponent
  },
  {
    path: 'forgot',
    component: ForgotPasswordComponent
    //canActivate: [AuthGuardService]
  },
  {
    path:'dashboard',
    loadChildren: './app/dashboard/dashboard.module#DashboardModule'

  },
  {
    path: '**',
    redirectTo: 'login',
    pathMatch: 'full'
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

Я пропускаю обновление или Angular 7 подразумевает, что мы должны изменить URL-адреса маршрутизации для конкретной новой формы?

Цитируем другое решение из ответа на github, в котором предполагается, что проблема в форме baseUrl:

@ filipesilva Я видел ваш коммит угловой / devkit @ 33af719 перемещен из файла tsconfig.app.json в файл src / tsconfig.json, но не в него значение ./, поэтому вновь созданные приложения v6 от CLI не смогут найти модули отложенной загрузки с путями, определенными как документация отложенной загрузки.

Я предлагаю это изменение. Он сохраняет baseUrl: "./" на tsconfig.json и каждый проект имеет свой tsconfig.app.json, который перезаписывает baseUrl имущество. Я надеюсь, что это согласуется с мультипроектным подходом и инструменты.

Если вы предпочитаете использовать относительный URL для loadChildren, он должен быть обновление документации и учебного пособия.

...