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 -
-
@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/node14
vom Target zu hoch für die VM, welchees5
benötigt. -
@AlCalzone Danke für Deine schnelle, kompetente und ausführliche Antwort. Daraus konnte bestimmt nicht nur ich viele neue Erkenntnisse gewinnen.
Herzlichst
Kobi