NEWS
[Frage] Typescript Module Verwalten
-
Grüezi Community
Gerne möchte ich meine mittels typescript erstellten Skripte in Themen gegliederte Module organisieren. Bei meiner eingesetzten Hardware handelt es sich um den Raspberry Pi 4 mit folgenden Software Komponenten:
Platform Betriebssystem: linux
Architektur: arm
CPUs: 4
Geschwindigkeit: 1500 MHz
Modell:ARMv7 Processor rev 3 (v7l)
RAM:3.7 GB
System-Betriebszeit: 11 T. 00:00:00
Node.js: v14.19.0
NPM: 6.14.16
Datenträgergröße: 28.2 GB
Festplatte frei: 22.0 GB
Adapter-Anzahl: 396
Betriebszeit: 2 T. 06:09:26
Aktive Instanzen: 20
Pfad: /opt/iobroker/
ts compiler version: 4.5.5Damit ich besser verstehen kann, wo und wie das iobroker JS runtime Environment spezifische TS-Module speichert, sodass der TS-Compiler Code-Modifikationen erkennt und nur geänderte Module neu kompiliert, habe ich folgende zwei Bespiel TS-Module erstellt:
//TS-Module Test0:
export class MyClass {
constructor(val1: number, val2: number) {
this.v1 = val1;
this.v2 = val2;
}
public Get(): number {
return this.v1 * this.v2;
}
private v1: number;
private v2: number;
}//TS-Module Test1:
moduleResolution: 'node' // option to specify the module resolution strategy
import { MyClass } from './Test0';
const obj = new MyClass(2, 3);
console.error(obj.Get());Die beiden TS-Module befinden sich unter dem Standard Ordner common vom iobroker Editor und der Compiler meldet, dass er das TS-Module Test0 nicht finden kann.
Könnte mir jemand mit typescript Erfahrung bitte folgende Fragen beantworten?
-
- Wo befinden sich die beiden TS-Module Test0 bzw. Test1 physikalisch?
-
- Muss ich dem TS-Compiler den SRC-Pfad explizit bekannt geben und falls ja, wo befindet sich eine entsprechende tsconfig.json-Datei?
-
- Muss ich dem TS-Compiler spezifische Optionen bekanntgeben, oder wurden diese bereits durch die TS-Projekt Erstellung automatisch erstellt?
-
- Wo befinden sich die Build Dateien des Compilers auf dem System?
-
- Ist für das iobroker runtime environment ein für node v14 passendes Paket zu installieren, damit eine TS-Modul Verwaltung im iobroker Editor überhaupt möglich wird?
(npm install --save-dev @tsconfig/node14)
- Ist für das iobroker runtime environment ein für node v14 passendes Paket zu installieren, damit eine TS-Modul Verwaltung im iobroker Editor überhaupt möglich wird?
Vielleicht hat jemand mit TS-Erfahrung, die Gnade mich meiner Unwissenheit zu entledigen?
Herzlichen Dank
Kobi -
-
Grüezi Community
Gerne möchte ich meine mittels typescript erstellten Skripte in Themen gegliederte Module organisieren. Bei meiner eingesetzten Hardware handelt es sich um den Raspberry Pi 4 mit folgenden Software Komponenten:
Platform Betriebssystem: linux
Architektur: arm
CPUs: 4
Geschwindigkeit: 1500 MHz
Modell:ARMv7 Processor rev 3 (v7l)
RAM:3.7 GB
System-Betriebszeit: 11 T. 00:00:00
Node.js: v14.19.0
NPM: 6.14.16
Datenträgergröße: 28.2 GB
Festplatte frei: 22.0 GB
Adapter-Anzahl: 396
Betriebszeit: 2 T. 06:09:26
Aktive Instanzen: 20
Pfad: /opt/iobroker/
ts compiler version: 4.5.5Damit ich besser verstehen kann, wo und wie das iobroker JS runtime Environment spezifische TS-Module speichert, sodass der TS-Compiler Code-Modifikationen erkennt und nur geänderte Module neu kompiliert, habe ich folgende zwei Bespiel TS-Module erstellt:
//TS-Module Test0:
export class MyClass {
constructor(val1: number, val2: number) {
this.v1 = val1;
this.v2 = val2;
}
public Get(): number {
return this.v1 * this.v2;
}
private v1: number;
private v2: number;
}//TS-Module Test1:
moduleResolution: 'node' // option to specify the module resolution strategy
import { MyClass } from './Test0';
const obj = new MyClass(2, 3);
console.error(obj.Get());Die beiden TS-Module befinden sich unter dem Standard Ordner common vom iobroker Editor und der Compiler meldet, dass er das TS-Module Test0 nicht finden kann.
Könnte mir jemand mit typescript Erfahrung bitte folgende Fragen beantworten?
-
- Wo befinden sich die beiden TS-Module Test0 bzw. Test1 physikalisch?
-
- Muss ich dem TS-Compiler den SRC-Pfad explizit bekannt geben und falls ja, wo befindet sich eine entsprechende tsconfig.json-Datei?
-
- Muss ich dem TS-Compiler spezifische Optionen bekanntgeben, oder wurden diese bereits durch die TS-Projekt Erstellung automatisch erstellt?
-
- Wo befinden sich die Build Dateien des Compilers auf dem System?
-
- Ist für das iobroker runtime environment ein für node v14 passendes Paket zu installieren, damit eine TS-Modul Verwaltung im iobroker Editor überhaupt möglich wird?
(npm install --save-dev @tsconfig/node14)
- Ist für das iobroker runtime environment ein für node v14 passendes Paket zu installieren, damit eine TS-Modul Verwaltung im iobroker Editor überhaupt möglich wird?
Vielleicht hat jemand mit TS-Erfahrung, die Gnade mich meiner Unwissenheit zu entledigen?
Herzlichen Dank
Kobi@kobi Der Skript-Adapter unterstützt prinzipbedingt keine Module (außer welche, die du von extern lädst).
Warum? https://nodejs.org/api/vm.html#class-vmmodule ist immer noch im experimental Status...Alle Skripte werden daher als standalone Skripte behandelt, bis auf globale Skripte, die allen nicht-globalen Skripten vorne angefügt werden (tatsächlich als Text vor den anderen Code gehängt).
D.h.:
TS-Module Test0 bzw. Test1 sind keine Module!. Alle Skripte werden in Objekten gespeichert unterscript.js.*
Importe aus anderen Skripten funktionieren nicht.Muss ich dem TS-Compiler den SRC-Pfad explizit bekannt geben und falls ja, wo befindet sich eine entsprechende tsconfig.json-Datei?
Muss ich dem TS-Compiler spezifische Optionen bekanntgeben, oder wurden diese bereits durch die TS-Projekt Erstellung automatisch erstellt?Nein, es gibt in-memory eine tsconfig, die du nicht bearbeiten kannst. Prinzipbedingt kannst du die auch nicht ändern, weil die tsconfig so konfiguriert ist, dass die ausgegebenen Skripte in der Javascript-VM laufen können. Diese ist vom Featureset etwas begrenzter als das volle Node.js.
Wo befinden sich die Build Dateien des Compilers auf dem System?
Der Compiler? Als dependency
virtual-tsc->typescript.
Die kompilierten Skripte? Ebenfalls in den oben erwähnten Objektenscript.js.*Ist für das iobroker runtime environment ein für node v14 passendes Paket zu installieren, damit eine TS-Modul Verwaltung im iobroker Editor überhaupt möglich wird?
Nein, siehe oben. Außerdem wäre
@tsconfig/node14vom Target zu hoch für die VM, welchees5benötigt. -
-
@AlCalzone Danke für Deine schnelle, kompetente und ausführliche Antwort. Daraus konnte bestimmt nicht nur ich viele neue Erkenntnisse gewinnen.
Herzlichst
Kobi
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden