2016-09-20 4 views
3

С окончательным выпуском Angular 2.0 наше приложение должно пройти миграцию. Сначала я перехожу с RC4 на RC5, а затем в финал. Я выполнил шаги миграции от barbarianmeetscoding-updating-your-angular-2-app-from-rc4-to-rc5-a-practical-guide, а также от angular.io - rc4-to-rc5.html.Углубленная миграция от RC4 до RC5

Наше приложение представляет собой большое приложение со 100 нечетными компонентами. Мой вопрос заключается в том, что для успешной миграции я должен внести изменения во все компоненты сразу или я могу взять их по одному компоненту за раз?

Я внесем необходимые изменения в main.ts, package.json, app.ts и представил app.module.ts. Для начала я переместил директивы и поставщики компонентов из app.ts в app.module и внесли необходимые изменения в app.routes. Но я получаю следующее сообщение об ошибке Error screenshot

Но нет явного использования toString() в упомянутом компоненте.

app.module.ts

import { NgModule, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'; 
import * as ngCore from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule} from '@angular/http'; 
import {HTTP_PROVIDERS} from '@angular/http'; 
import {routing} from './app.routes'; 
import { App} from './app'; 
import {LocationStrategy, HashLocationStrategy} from '@angular/common'; 
import {HttpService} from '../service/http/httpService'; 
import {Button} from '../components/button'; 
import {Checkbox} from '../components/checkbox'; 
import {PipeSafe} from "../pipe/pipe-safe"; 
import {OrderBy} from "../pipe/orderby"; 
import {Number} from '../pipe/number'; 
@NgModule({ 
    imports: [ 
     BrowserModule, 
     FormsModule, 
     HttpModule, 
     routing 
    ], 
    declarations: [ 
     App, 
     PipeSafe, 
     OrderBy, 
     Number 
    ], 
    providers: [ 
     ngCore.provide(LocationStrategy, {useClass: HashLocationStrategy}), 
     ngCore.provide('TemplateComponents', { useValue: { 
      'button': Button, 
      'checkbox': Checkbox, 

     }}), 
    HttpService 
    ], 
    bootstrap: [ App ], 
    schemas: [ CUSTOM_ELEMENTS_SCHEMA ] 
    }) 
    export class AppModule { } 
+0

вы проверили [это] (https://github.com/angular/angular/issues/10612) вне. похоже на то, что вы имеете дело с – Bean0341

ответ

0

там были. Это было очень больно, но утешительно, что переход от RC5 к финальному выпуску был намного проще. Может быть, вам стоит подумать о переходе прямо в финал, а не в RC5? Что касается вас, вопрос: это зависит от общей архитектуры вашего приложения. Иногда проще один компонент за один. С другой стороны, зависимости между компонентами могут быть настолько важными, что вам нужно будет внести все изменения сразу.

Я не уверен на 100%, где ошибка, которую вы получаете, но, вероятно, это потому, что у вас есть ошибка в импорте и объявлениях в app.module. Что-то, что должно идти на импорт, поступало в декларации или наоборот. toString() - метод framework, возвращающий строковое представление объекта this.

+0

Итак, даже если я не перетаскиваю директивы из всех моих компонентов в app.module, мое приложение все равно должно работать, потому что упоминалось, что на данный момент все директивы и каналы будут подняты. Правильно? – user3344978

+0

Правильно. Но вы должны это учитывать, поскольку это потребуется в выпусках, начиная с RC6. –

+0

Релизы, начиная с RC6, потребуют от меня переместить ВСЕ директивы, трубы и службы в app.module? В нашем приложении у нас есть 100 нечетных компонентов и около 15 сервисов. Итак, следует ли переместить каждую директиву и службу в app.module? Или я должен переместить только те, которые наиболее часто используются? – user3344978

0

В моем обновлении до 2.0.0, я нашел, что это проще всего:

  1. создать простое, несколько репрезентативного, 2.0.0-rc.4 приложения, используя угловую CLI; а затем

  2. обновить приложение до 2.0.0.

Я использовал различные версии Углового CLI, чтобы получить зависимости и файлы конфигурации (включая веб-пакет) для двух этапов миграции. Вам нужно поэкспериментировать с Угловым CLI, чтобы найти версию, которая производит приложение Angular 2.0.0-rc.4); вы можете использовать последнюю версию для создания окончательного приложения.

Затем я применил набор изменений, необходимых для обновления моего простого приложения 2.0.0 для всего моего приложения; и, протестировав каждый компонент, при необходимости внести незначительные исправления.

Вот некоторые из проблем, которые я использовал, когда я прошел процесс обновления. Некоторые из них, вы, надеюсь, пропустите, если вы сделаете так, как я предлагаю выше.

Module not found: Error: Can't resolve 'hammerjs'

Cannot find module './models/config'

"The package [email protected] does not satisfy its siblings' peerDependencies requirements!"

TypeError: Cannot read property 'directoryExists' of undefined

@angular/forms Generic type 'Type<T>' requires 1 type argument(s)

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