Aurelia CLI & TypeScript & MomentJS
Ich bringe Aurelia (CLI) & TypeScript & MomentJS nicht zusammen. Ich habe Lösungen für Aurelia & Moment-Probleme gesehen, aber sie verwenden nicht die Aurelia-CLI.
Hier ist, was ich im Moment mache:
Neues Aurelia-Projekt mit Aurelia CLI:
au new
Ich wähle TypeScript anstelle von Babel.
Install moment
npm install moment --save
Dies installiert Moment 2.4.1. Ich kann es (einschließlich des moment.d.ts) von node_modules finden.
Edit aurelia.json
Ich füge "Moment" zu "Abhängigkeiten" hinzu:
Nutze Moment in app.ts
Probleme beginnen, wenn ich jetzt versuche, Moment in app.ts zu importieren.
import { moment } from 'moment';
Dies gibt einen Fehler aus: "Modul" o: / dev / spikes / amoment / node_modules / moment / moment "hat kein exportiertes Mitglied 'moment'
Das Ändern des Gehäuses behebt diesen Fehler:
import { Moment } from 'moment';
Aber an diesem Punkt stecke ich total fest. Wenn ich versuche, moment (oder Moment) zu verwenden, erhalte ich immer die Fehlermeldung "Name 'moment' kann nicht gefunden werden. Hier ist die aktuelle app.ts, die den Fehler" Name 'moment' kann nicht gefunden werden "angibt:
import { Moment } from 'moment';
export class App {
message = 'Hello World!';
hello() : string {
return moment.format();
}
}
Der Import scheint das Problem zu sein. Irgendwelche Ideen, wie man das umgehen kann?
Aktualisiere
Nach dem Korrigieren der app.ts, um wie folgt auszusehen, kompiliert das Ding jetzt. Es gibt jedoch "TypeError: Eigenschaft 'Format' von undefined kann nicht gelesen werden", wenn sie ausgeführt wird.
import { Moment } from 'moment';
import { autoinject } from "aurelia-framework";
export class App {
message: string;
moment: Moment;
constructor(moment: Moment) {
this.moment = moment;
this.message = this.moment.format('MMMM Do YYYY, h:mm:ss a')
}
}
Aktualisiere
Basierend auf dem letzten Fehler scheint es, dass das automatische Einfügen ohne @autoinject nicht funktioniert hat. Also fügte das hinzu und der Fehler ändert sich: "TypeError: moment.format ist keine Funktion".
import { Moment } from 'moment';
import { autoinject } from "aurelia-framework";
@autoinject
export class App {
message: string;
moment: Moment;
constructor(moment: Moment) {
this.message = moment.format();
}
}