2017-05-12 6 views
2

Ich habe ein neues Angular-Projekt mit Angular-CLI erstellt.Angular ng build - Ziel = Produktion gibt Fehler

Die Versionen Ich benutze sind:

Angular-Cli: 1.0.2

Eckig: 4.0.0.

Ich habe eine Menge Code in sie aufgenommen, aber jetzt, wenn ich mein Projekt mit folgenden Befehl bauen I Bündel von Fehlern erhalten

ng build --target=production --env=staging

Fehler:

/src/app /views/signup/signup.component.html (21,86): Eigenschaft 'email' ist geschützt und nur innerhalb der Klasse 'SignUpComponent' und ihrer Unterklassen zugänglich.

/src/app/views/signup/signup.component.html (26,80): Eigenschaft 'password' ist geschützt und nur innerhalb der Klasse 'SignUpComponent' und ihrer Unterklassen zugänglich.

Kann mir bitte jemand in dieser Hinsicht helfen, wie kann ich diese Fehler entfernen? Der Build ist erfolgreich, wenn ich --target=production weglasse, aber in der Vergangenheit bekam ich das Problem, dass ohne Angabe des Ziel-Browser-Cache die alte Deployment-Version und Benutzer den Browser-Cache löschen muss, um die letzten Änderungen/Deployment zu bewirken.

Antwort

4

Sind Ihre E-Mail- und Passworteigenschaften als privat definiert? Werden sie in der Vorlage der Komponente verwendet? Dann müssen sie von privat auf öffentlich geändert werden.

Wenn Sie die Schräg CLI Produktionsmodus verwenden, erhalten Sie automatisch die folgenden:

  • --aot auf true gesetzt ist
  • --output-hashing für alle (Fingerabdrücke Vermögen) gesetzt
  • --sourcemaps auf false gesetzt ist
  • --extract-css ist auf True (macht echte CSS-Dateien für globale Stile, während Entwickler macht. JS-Dateien als eine Neuaufbau-Optimierung)
  • fügt Servicemitarbeiter konfiguriert, wenn in der CLI json
  • ersetzt process.env.NODE_ENV in Module mit dem production Wert (dies für einige Libs benötigt wird, wie reagieren)
  • läuft auf dem Code

dies für mehr verunstalten See Information: https://github.com/angular/angular-cli/pull/6232

Es ist der AOT-Compiler, der diese Fehler am wahrscheinlichsten generiert. Der aot-Compiler kompiliert die Vorlage in TypeScript und erzeugt daher mehr Typfehler. Eine andere Alternative ist, die --prod ohne aot zu verwenden.

+0

Ja, die E-Mail und das Passwort sind in der Komponente geschützt, aber in der vorherigen Version von eckigen/eckigen funktionierte es. Also, sollte ich sie öffentlich machen oder --aot = false verwenden? –

+1

Machen Sie sie öffentlich ...AOT ist für die Produktionsleistung erforderlich –

+0

Ich bin mir nicht sicher, welche Version des CLI zu drehen begann - nicht wahr für den Produktionsmodus. Aber ich vermute, dass es deshalb früher funktioniert hat. Und wie P. Moloney erwähnt ... ist die Verwendung von --aot = false nicht wirklich eine gute Wahl, da der aot (vor dem Compiler) die Startleistung verbessern kann. – DeborahK

2

Sie Cloud versuchen, öffentliche Sichtbarkeit auf E-Mail und Passwort zu setzen.