Hallo Leute,
Ich habe mich gefragt, wie ich die Datei rrule.js aus dem Typskript importieren kann:
import 'rrule';
Scheint nicht zu funktionieren, da module.exports
als wahr ausgewertet wird, sodass nicht einmal der globale Gültigkeitsbereich aufgefüllt wird.
Wenn ich eine andere Art von Import versuche, wie zum Beispiel:
import * as rrule from 'rrule';
Beim Kompilieren bekomme ich folgendes:
Error TS2307: Cannot find module 'rrule'.
Ich habe das gleiche Problem. Haben Sie jemals eine Lösung gefunden?
Siehe dieses Beispiel:
http://jqfaq.com/how-to-use-external-js-in-typescript/
Ich konnte RRule in meiner ts-Datei so verwenden (nachdem ich rrule.js in meine index.html-Seite aufgenommen hatte):
// Datei form.ts
var RRule deklarieren: beliebig;
Modul myapp.controllers {
class myClass {
constructor() {
var rule = RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
console.log(rule.toText());
}
}
}
Hoffe das hilft jemandem.
Was ich in diesen Fällen mache, ist ein Typing zu definieren.
Datei zu Eingaben hinzufügen -> rrule.d.ts
Inhalt der Datei rrule.d.ts:
declare var RRule: any;
declare var RRuleSet: any;
declare var rrulestr: any;
Sie können ihre Eigenschaften dort erweitern, wenn Sie möchten.
dann verknüpfen Sie die rrule.d.ts mit index.d.ts pro Beispiel (normalerweise gruppiere ich alle meine d.ts in einer Datei und referenziere sie dort)
index.d.ts:
/// <reference path="globals/rrule/rrule.d.ts" />
danach kannst du verwenden
RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
ohne die zu definieren
declare var RRule: any;
überall wieder.
Mit freundlichen Grüßen!
Das Ausführen von npm install @types/rrule
das Problem für mich gelöst. Ich konnte dann so importieren
import { RRule, RRuleSet } from "rrule";
@dennis2k und wie hast du es mit rrulestr gelöst?
@uncledent Ich konnte dies nur mit require
var rrulestr = require('rrule').rrulestr
@dennis2k Vielen Dank für Ihre Antwort, aber dies kann in Angular4 nicht verwendet werden :(
Ich könnte das in Angular2/4 so machen, nicht schön, aber funktioniert:
declare function require(name:string);
var rrulestr = require('rrule').rrulestr;
Ich denke, dieses Thema ist tot. Bitte aktualisieren Sie, wenn weitere Unterstützung benötigt wird!
Hilfreichster Kommentar
Das Ausführen von
npm install @types/rrule
das Problem für mich gelöst. Ich konnte dann so importierenimport { RRule, RRuleSet } from "rrule";