2017-10-08 7 views
1

L'application de travail quand je lance cordova ionique run android --device mais donne erreur lorsque je run cordova ionique android --prod --releaseLazy chargement composant 3ème partie en page chargée (ionique)

Je suis en train utiliser NG2-QRCode dans ma page chargée paresseux

Error: Unexpected value 'QRCodeComponent in D:/qrstore/node_modules/ng2-qrcode/dist/ng2-qrcode.d.ts' declared by the module 'ItemDetailPageModule in D:/qrstore/src/pages/item-detail/item-detail.module.ts'. Please add a @Pipe/@Directive/@Component annotation. at Error (native) at syntaxError (D:\qrstore\node_modules\@angular\compiler\bundles\compiler.umd.js:1729:34) at D:\qrstore\node_modules\@angular\compiler\bundles\compiler.umd.js:15625:40 at Array.forEach (native) at CompileMetadataResolver.getNgModuleMetadata (D:\qrstore\node_modules\@angular\compiler\bundles\compiler.umd.js:15607:54) at addNgModule (D:\qrstore\node_modules\@angular\compiler\bundles\compiler.umd.js:24403:58) at D:\qrstore\node_modules\@angular\compiler\bundles\compiler.umd.js:24414:14 at Array.forEach (native) at _createNgModules (D:\qrstore\node_modules\@angular\compiler\bundles\compiler.umd.js:24413:26) at analyzeNgModules (D:\qrstore\node_modules\@angular\compiler\bundles\compiler.umd.js:24288:14)

info ionique

@ionic/cli-utils : 1.12.0 
ionic (Ionic CLI) : 3.12.0 

packages globaux:

cordova (Cordova CLI) : 7.0.1 

paquets locaux:

@ionic/app-scripts : 3.0.0 
Cordova Platforms : android 6.2.3 
Ionic Framework : ionic-angular 3.7.1 

Système:

Android SDK Tools : 25.2.3 
Node    : v6.9.4 
npm    : 3.10.8 
OS    : Windows 10 

Divers:

backend : pro 

item module détail

import { NgModule } from '@angular/core'; 
import { IonicPageModule } from 'ionic-angular'; 
import { ItemDetailPage } from './item-detail'; 
import { HttpModule, Http } from '@angular/http'; 

//native 
import { File } from '@ionic-native/file'; 
import { FilePath } from '@ionic-native/file-path'; 
import { SQLite } from '@ionic-native/sqlite'; 

//providers 
import { ItemsProvider, LabelsProvider, SQLiteDatabaseProvider } from '../../providers/providers'; 

//components 
import { ItemCreatePage } from '../item-create/item-create'; 
import { QRCodeComponent } from 'ng2-qrcode' 

//directive 
import { AbsoluteDragDirective } from '../../directives/absolute-drag/absolute-drag'; 

@NgModule({ 
    declarations: [ 
    ItemDetailPage, 
    QRCodeComponent, 
    AbsoluteDragDirective 
    ], 
    imports: [ 
    IonicPageModule.forChild(ItemDetailPage), 
    HttpModule 
    ], 
    exports: [ 
    ItemDetailPage 
    ], 
    entryComponents: [] 
    , 
    providers:[ 
    ItemsProvider, 
    SQLite, 
    SQLiteDatabaseProvider, 
    File, 
    FilePath 
    ] 
}) 
export class ItemDetailPageModule {} 

Répondre

2

ng2-qrcode n'est plus maintenu et ne fonctionne pas avec le compilateur AoT de angular (qui est utilisé lorsque vous construisez votre application avec --prod). Mais il y a une baisse de remplacement qui est construite pour être utilisée dans les projets Ionic3/Angular4 + qui utilisent le compilateur AoT: angularx-qrcode. Il est basé sur la même bibliothèque et fournit la même API.

Ajouter comme suit:

npm install angularx-qrcode --save 

Et pour l'utiliser l'importer dans votre NgModule:

import { QRCodeModule } from 'angularx-qrcode'; 

Et puis l'ajouter au tableau imports:

imports: [ 
    QRCodeModule 
], 
+0

Bonne info +1 Une question: Est-ce que cela signifie que nous ne pouvons pas utiliser un composant angulaire qui ne se développe pas en utilisant 'Angular 4' et plus? En d'autres termes, ne pouvons-nous pas utiliser les composants 'Angular 2' avec le dernier' Ionic 3' avec 'AOT'? – Sampath

+2

Merci Sam! Le composant lui-même n'est pas un problème, si vous copiez le coller dans votre propre projet, il devrait fonctionner correctement. Le problème est de savoir comment la bibliothèque a été publiée, pour que votre bibliothèque Angular2 fonctionne avec ngc (le compilateur angulaire, qui est lancé à l'avance en mode prod) quelques modifications doivent être faites (par exemple en plus des fichiers * .d.ts Les fichiers * .metadata.json sont nécessaires). Vous pouvez en lire plus à ce sujet [ici] (https://medium.com/@isaacplmann/getting-your-angular-2-library-ready-for-aot-90d1347bcad). Donc, la plupart des composants devraient fonctionner avec Angular4/Ionic3 mais pas celui-ci car il n'est pas maintenu. – David