Fehler bei der Verwendung von MomentJS in der Angular Typescript-Bibliothek

9

Ich baue eine Angular (2+) -Komponentenbibliothek mit jvandemo / generator-angular2-library als ein Starter, der Rollup als Modul-Builder verwendet. Die Komponente, die ich in der Bibliothek erstelle, verwendet MomentJS .

Ich hatte verschiedene Build-Probleme mit der Aufnahme von MomentJS.

Ich habe zuerst import moment from 'moment'; verwendet, um Moment in die Komponente zu importieren, aber das erzeugt den folgenden Fehler bei Build;

%Vor%

Ich habe diese SO-Frage gefunden, die besagt, dass ich import * as moment from 'moment'; jedoch damit verwenden soll Ich verstehe;

%Vor%

Soweit ich das beurteilen kann, sind das die beiden einzigen Optionen und ich kann nicht zur Arbeit kommen, was fehlt mir?

Bearbeiten

Ich habe dieses Problem zum Github Repo der Bibliothek hinzugefügt, das minimalistische Replikationsschritte enthält

    
Chris Brown 22.10.2017, 16:32
quelle

2 Antworten

4

Der Fehler ist sehr klar und spezifisch

  

Fehler: Kann einen Namespace ("Moment") nicht aufrufen       bei Fehler (/Users/chris/angular-library/node_modules/rollup/dist/rollup.js:185:14)

Dies ist gemäß der ES-Modul-Spezifikation.

Dies bedeutet, dass die folgende Methode eine ungültige Methode zum Importieren von Momenten oder von Dingen ist, die Sie aufrufen möchten, da ein Modul-Namespace-Objekt, z. B. das von * as ns , nicht aufgerufen werden kann.

%Vor%

Die korrekte Form ist die Form, dass ngc einen Fehler auf

verursacht %Vor%

Zuerst müssen Sie das Flag --allowSyntheticDefaultImports angeben, damit dies funktioniert.

tsconfig.json

%Vor%

Unter der Annahme, dass ngc die Option erkennt, haben Sie immer noch ein zusätzliches Problem.

Das obige Flag ist für Benutzer von Tools wie SystemJS oder Webpack, die die Synthese durchführen, so dass ein solcher Code überprüft werden kann.

Ab TypeScript 2.7 können Sie nun das Flag --esModuleInterop angeben, damit die Sprache die Synthese als Teil des Übertragungsprozesses bereitstellt.

%Vor%

Beachten Sie, dass beim Kompilieren zu CommonJS-, AMD- oder UMD-Modulen (z. B. mit --module commonjs ) die korrekte Importsyntax eher

ist %Vor%     
Aluan Haddad 30.10.2017, 03:01
quelle
1

In der Beispielanweisung hatte ich kein Problem beim Kompilieren, wenn ich Folgendes verwendete:

%Vor%

Die Dateien werden aus einem Build-Verzeichnis kompiliert, das ein Unterverzeichnis des Stammverzeichnisses ist. Sie erhalten eine weitere Warnung über "dieses", hier erwähnt:

Ссылка

Ich muss im gulfile sagen, dass die Bibliothek extern ist:

%Vor%

Und von der GitHub-Verknüpfung sollten Sie einen Onwarn-Block zu beiden Rollup-Abschnitten hinzufügen: Das ist Abschnitt "Rollup: umd" und "Rollup: fesm"

%Vor%

Geht das weiter?

    
PeterS 25.10.2017 21:59
quelle

Tags und Links