Неожиданное значение X, импортируемое модулем Z при использовании флага —aot

#angular #angular-cli #angular2-mdl

#angular #angular-cli #angular2-mdl

Вопрос:

Мое приложение работает очень медленно до завершения загрузки при запуске в браузере (я не смею говорить о мобильных устройствах 10-15 секунд) Да, я делаю ng build --prod , и это все еще медленно.

Итак, с angular cli beta 16 я пробую новый флаг —aot И получаю много ошибок импорта и объявлений:

  0% compilingUnexpected value 'FileDropDirective' declared by the module 'AppModule'
Error: Unexpected value 'FileDropDirective' declared by the module 'AppModule'
    at C:Users...node_modules@angularcompilerbundlescompiler.umd.js:14174:33
    at Array.forEach (native)
  

Затем просто для развлечения я прокомментировал 3 библиотеки, которые вызвали у меня эту ошибку, просто чтобы посмотреть, продолжит ли она компиляцию… НЕТ ! Я получаю другую ошибку:

 10% building modules 6/12 modules 6 active ...ode_modulesstyle-loaderaddStyles.jsSyntaxError: Unexpected token ILLEGAL
    at WebpackResourceLoader._evaluate (C:Users...node_modules@ngtoolswebpacksrcresource_loader.js:75:24)
  

Как добиться? Спасибо

Комментарии:

1. Не могли бы вы показать нам какой-нибудь исходный код, пожалуйста? Ваш AppModule и FileDropDirective 😉

2. вот вы где: pastebin.com/fxAUmDBF

Ответ №1:

Сегодня выпущена версия 2.0.0 angular2-mdl. Теперь поддерживается AOT.

Комментарии:

1. я знаю. , будет исправлено с 2.0.1. но содержимое readme такое же, как на giihub.

2. ИЗ-ЗА ПРОБЛЕМ, я получаю много ошибок после обновления до 2.0.0! В app.component.ts я использую службу MdlDialogOutletService, и я получаю angular2-mdl/components/index"' has no exported member 'MdlDialogOutletService'. затем в моем диалоговом окне компонента, в котором я имею pastebin.com/UbJs3Y9U и я получаю WARNING in ./src/app/edit-dialog/edit-dialog.component.ts 92:170 export 'MdlDialogReference' was not found in 'angular2-mdl' WARNING in ./src/app/edit-dialog/edit-dialog.component.ts 92:208 export 'MdlDialogReference' was not found in 'angular2-mdl'

3. У меня также есть эти ошибки: WARNING in ./src/app/tabs-view/tabs-view.component.ts 305:98 export 'MdlDialogService' was not found in 'angular2-mdl'

4. Итак, я попытался удалить этот MdlDialogOutletService и поместить только <dialog-outlet></dialog-outlet> в index.html так что я всегда получаю ошибку 'MdlDialogService' was not found in 'angular2-mdl' , и MdlDialogReference' was not found in 'angular2-mdl я не понимаю, что происходит!

5. пожалуйста, прочитайте github.com/mseemann/angular2-mdl/blob/master/CHANGELOG.md . номер версии увеличивается из-за критических изменений. так работает semver.

Ответ №2:

Я полагаю, что MdlModule и Angular2DataTableModule являются некоторыми внешними библиотеками. Если они не включают *.metadata.json для каждого из своих угловых файлов, ваша компиляция AoT не может знать, что они делают. Вы ничего не можете с этим поделать, просто отправьте сообщение о проблеме, чтобы они обновили свои библиотеки, чтобы они были совместимы с AoT.

Но для вас FileDropDirective я не могу сказать без кода.

Комментарии:

1. Как я могу решить это самостоятельно, пока не исправлено, есть способ достичь? некоторые документы?

2. Вы можете клонировать их проект и создавать его самостоятельно с правильной конфигурацией AoT. Затем вызовите npm pack , чтобы сгенерировать zip-версию их библиотеки для NPM. Затем в вашем проекте npm install /path/to/this/zip.tar.gz переопределите общедоступную версию NPM новой версией локали AoT.

3. например: я попытался, npm pack angular2-data-table я понял, тогда мне нужно отредактировать его, нет? перед установкой. Как и что мне нужно изменить, чтобы оно стало доступным для доступа 🙂 спасибо

4. Вы должны git clone использовать angular2-data-table, отредактировать его, скомпилировать и создать его с помощью AoT, npm pack it и npm install it в вашем проекте. Для части компиляции AoT вы можете начать с angular.io/docs/ts/latest/cookbook/aot-compiler.html . Вы также можете посмотреть на некоторые другие библиотеки, которые уже обрабатывают компиляцию AoT, например github.com/noemi-salaun/ng2-logger

5. не уверен, что я смогу скомпилировать эту библиотеку с помощью AoT, но свяжусь с командой, надеюсь, будет улучшено, ваш регистратор, похоже, ничего не изменится github.com/noemi-salaun/ng2-logger/commit /… вы только добавляете `skipMetadataEmit»: false» и все?