Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Frage] Typescript Module Verwalten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Frage] Typescript Module Verwalten

    This topic has been deleted. Only users with topic management privileges can see it.
    • Kobi
      Kobi last edited by

      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.5

      Damit 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?

        1. Wo befinden sich die beiden TS-Module Test0 bzw. Test1 physikalisch?
        1. Muss ich dem TS-Compiler den SRC-Pfad explizit bekannt geben und falls ja, wo befindet sich eine entsprechende tsconfig.json-Datei?
        1. Muss ich dem TS-Compiler spezifische Optionen bekanntgeben, oder wurden diese bereits durch die TS-Projekt Erstellung automatisch erstellt?
        1. Wo befinden sich die Build Dateien des Compilers auf dem System?
        1. 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)

      Vielleicht hat jemand mit TS-Erfahrung, die Gnade mich meiner Unwissenheit zu entledigen?

      Herzlichen Dank
      Kobi

      AlCalzone 1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @Kobi last edited by AlCalzone

        @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 unter script.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 Objekten script.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, welche es5 benötigt.

        1 Reply Last reply Reply Quote 0
        • Kobi
          Kobi last edited by

          @AlCalzone Danke für Deine schnelle, kompetente und ausführliche Antwort. Daraus konnte bestimmt nicht nur ich viele neue Erkenntnisse gewinnen.

          Herzlichst
          Kobi

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          811
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          196
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo