Не найдено метаданных NgModule для AppModule после обновления с Angular 5 до Angular 7

Python 3.6.0 Timings

Вот результаты синхронизации с использованием Python 3.6.0. Имейте в виду, что эти времена относятся друг к другу, а не абсолютны.

Я придерживался только мелких копий, а также добавил некоторые новые методы, которые не были возможны в Python2, например list.copy() ( Python3 эквивалент среза ) и распаковки (*new_list, = list):

METHOD                  TIME TAKEN
b = a[:]                6.468942025996512   #Python2 winner
b = a.copy()            6.986593422974693   #Python3 "slice equivalent"
b = []; b.extend(a)     7.309216841997113
b = a[0:len(a)]         10.916740721993847
*b, = a                 11.046738261007704
b = list(a)             11.761539687984623
b = [i for i in a]      24.66165203397395
b = copy.copy(a)        30.853400873980718
b = []
for item in a:
  b.append(item)        48.19176080400939

Мы видим, что старый победитель по-прежнему выходит сверху, но на самом деле не на огромную сумму, учитывая повышенную читаемость подхода Python3 list.copy().

Обратите внимание, что эти методы делают not выводными эквивалентными результатами для любого ввода, отличного от списков. Все они работают для разрезаемых объектов, некоторые работы для любого итерабельного, но только copy.copy() работает для любого объекта Python.


Вот код тестирования для заинтересованных сторон ( Шаблон отсюда ):

import timeit

COUNT = 50000000
print("Array duplicating. Tests run", COUNT, "times")
setup = 'a = [0,1,2,3,4,5,6,7,8,9]; import copy'

print("b = list(a)\t\t", timeit.timeit(stmt='b = list(a)', setup=setup, number=COUNT))
print("b = copy.copy(a)\t\t", timeit.timeit(stmt='b = copy.copy(a)', setup=setup, number=COUNT))
print("b = a.copy()\t\t", timeit.timeit(stmt='b = a.copy()', setup=setup, number=COUNT))
print("b = a[:]\t\t", timeit.timeit(stmt='b = a[:]', setup=setup, number=COUNT))
print("b = a[0:len(a)]\t", timeit.timeit(stmt='b = a[0:len(a)]', setup=setup, number=COUNT))
print("*b, = a\t", timeit.timeit(stmt='*b, = a', setup=setup, number=COUNT))
print("b = []; b.extend(a)\t", timeit.timeit(stmt='b = []; b.extend(a)', setup=setup, number=COUNT))
print("b = []\nfor item in a: b.append(item)\t", timeit.timeit(stmt='b = []\nfor item in a:  b.append(item)', setup=setup, number=COUNT))
print("b = [i for i in a]\t", timeit.timeit(stmt='b = [i for i in a]', setup=setup, number=COUNT))

3
задан Dominick 24 March 2019 в 03:07
поделиться

4 ответа

Я думаю, что вы уже читали эту статью: https://github.com/angular/angular-cli/issues/8798

. Если нет, прочитайте заметьте, что TS также изменил файл package.json вручную, чтобы решить его проблему.

Так как мы не увидели фактического сообщения об ошибке в вашей сборке, мы не можем сделать вывод, если проблема имеет те же обстоятельства, что и в ссылке. Поэтому я хочу решить вашу проблему следующим образом:

  1. Удалить папку npm_modules
  2. Переместить файл package.json в резервную папку (на случай, если она нам понадобится). назад) - поэтому он не должен существовать в папке вашего проекта, поскольку он будет сгенерирован, когда вы выполните следующие шаги
  3. Выполните установку npm
  4. Выполните сборку
  5. Выполните задание serve

После вышесказанного или, если вы снова включите его, я предлагаю посмотреть разницу между вашим старым package.json и новым файлом package.json и сообщить нам, что вы заметили, поскольку это всегда хорошо отдать.

0
ответ дан Ian P. 24 March 2019 в 03:07
поделиться

Мне удалось решить эту проблему, обновив файл tsconfig.app.json , добавив в него свойство files и указав app/app.module.ts в массиве.

0
ответ дан Dominick 24 March 2019 в 03:07
поделиться

Это должен быть @NgModule, а не просто NgModule.

@NgModule({
      declarations: [
        AppComponent,
        AdminComponent,
        AdminComponent1,
        AuthComponent,
        BreadcrumbsComponent,
      ],
      imports: [
        BrowserModule,
        BrowserAnimationsModule,
        FormsModule,
        ReactiveFormsModule,
        AppRoutingModule,
        SharedModule,
        NgProgressModule,
        SimpleNotificationsModule.forRoot(),
        BrowserModule,


      ],
      providers: [MenuItems, ServicesProvider, AuthGuardService, SupperAdmin, AuthLoginService,  NgProgressModule, ConfigService],
      bootstrap: [AppComponent]
    })

Метаданные используются для украшения класса, чтобы он мог настроить ожидаемое поведение класса. Мы используем синтаксис Typescript и присоединяем классы с метаданными, используя функцию декоратора. Чтобы сделать класс компонентом, мы добавляем декоратор @Component, как показано в следующем коде:

@Component({...})
export class FirstComponent {...}
0
ответ дан Thivanka Saranatha 24 March 2019 в 03:07
поделиться

У вас есть несколько запятых в ваших декларациях @NgModule's и импорт массивов. Удалите их и посмотрите, решит ли это это.

0
ответ дан Darren Ruane 24 March 2019 в 03:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: