Mit moment.js im Winkel 2 Typoskript-Anwendung
Bin ich zu kämpfen mit moment.js Bibliothek innerhalb einer Eckigen 2 Typoskript-app. Auch nach der Lektüre der Antwort auf diese Frage ich kann nicht ankommen es zu wirken.
Dies ist, was ich getan habe so weit:
- Ich installiert moment.js mit npm, so kann ich die Bibliothek finden Sie unter node_modules/moment/moment.js
- Ich konfiguriert System.js abrufen moment Bibliothek:
System.config({ packages: { app: { format: 'register', defaultExtension: 'js' }, moment: { main: 'moment.js', type: 'cjs', defaultExtension: 'js' } }, map: { moment: 'node_modules/moment' } });
- Ich installiert Typoskript-Testungen mit
typings install moment-node --ambient --save
undtypings install moment --ambient --save
, damit ich sehen kann, die richtigen Testungen innen-Testungen/Haupt - /ambient - /moment-Knoten und-Testungen/main/ambient/moment
Nun, wenn in meinem code, den ich verwenden import * as moment from 'moment';
typescript-Kompilierung läuft und ich kann sehen, den richtigen Vorschlag, innen-Atom-editor (wenn ich anfange mit moment().
ich sehen kann, Jahr(), Monat(), etc.). Jedoch, wenn ich meine code in den browser, es gibt eine Fehlermeldung, dass "moment ist nicht eine Funktion' (Debuggen kann ich sehen, dass moment ist ein Objekt mit vielen Methoden).
Wenn ich Schreibe import moment from 'moment';
Sie den code in der browser läuft gut, allerdings typescript-Kompilierung schlägt fehl mit "Modul Augenblick hat kein Standard-export' und ich kann nicht jede Anregung aus dem Atom beim schreiben von code.
Was mache ich falsch? Was ist die richtige Art und Weise zu importieren moment.js (und alle nicht-Typoskript-Bibliothek) in eine Eckige 2 Typoskript-Anwendung?
Vielen Dank für Ihre Antwort! Aber als ich sagte in meiner Antwort, wenn ich Schreibe
import moment from 'moment';
typescript-Kompilierung schlägt fehl, und ich kann nicht jeden Vorschlag von meiner IDE-wenn Sie mit moment().InformationsquelleAutor DanyUP | 2016-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist nicht richtig. Es funktioniert, aber es ist hässlich und unübersichtlich. Der TypeScript-compiler unterstützt SystemJS mit Fahnen wie
allowSyntheticDefaultImports
.Dies funktioniert zur Laufzeit, aber nicht kompilieren in Visual Studio.
InformationsquelleAutor Vladimir Trifonov
Wie schon weiter unten moment Schiffen mit eigener Testungen jetzt.
Und @Winkel/cli geändert haben aswell. Aktualisiert meine Antwort, um dies zu reflektieren.
npm i --save moment
ist alles, was benötigt wird, die mit @Winkel/cli.
Unten ist meine alte veraltete Antwort.
Mit Winkel-cli: So erhalten Sie Intellisense in VsCode
Bearbeiten --> angular-cli-build.js
Bearbeiten --> system-config.ts
In der Komponente:
InformationsquelleAutor Tony Krøger
Außerdem fand ich dies:
Installieren Moment.js mit NPM:
Fügen Sie es zu Ihrem SystemJS Konfiguration:
Müssen Sie auch die Schnittstelle:
tsd install moment --save
und dann fügen Sie hinzu:
InformationsquelleAutor Vladimir Trifonov
Von Ihrem index.html hinzufügen
In der Komponente verwenden:
InformationsquelleAutor Sacky San
Wenn Sie ein Modul importieren mit namespace syntax zu sammeln, die Exporte auf ein einzelnes Objekt, wie in
import * as moment from 'moment'
Sie nicht importieren, die tatsächlich die moment-Objekt, das das Modul exportiert werden, sondern alle seine Mitglieder. Sie verlieren die call-Signatur. Um dies zu beheben, in einer SystemJS + Typoskript Projekt, geben Sie entweder einen Wert von "system" für das Modul oder den Werttrue
für allowSyntheticDefaultImports, übergeben diese an den TypeScript-compiler, vorzugsweise über einetsconfig.json
- Datei.Dann importieren moment wie so
und alles wird funktionieren.
InformationsquelleAutor Aluan Haddad