Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Symbole aus global scripts werden nicht aufgelöst

    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

    Symbole aus global scripts werden nicht aufgelöst

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

      Hallo,

      ich habe ein globales (TypeScript-) Script (im global Ordner) was Funktionen und Klassen nutzt die wiederum in einem anderen globalen Script definiert sind. Diese Konstellation scheint fast zufällig manchmal zu funktionieren und manchmal nicht. Wenn es nicht funktioniert bekomme ich eine Fehlermeldung, dass das entsprechende Element nicht definiert sei.

      Ich habe ein bisschen herumexperimentiert und es scheint mit der Reihenfolge zusammen zu hängen in der die Script-dateien erstellt worden sind. Das scheint die selbe Reihenfolge zu sein in der sie auch compiliert werden.

      Kann man diese Reihenfolge irgendwie ändern?
      Oder wird es generell nicht unterstützt globale scripts in anderen globalen scripts wieder zu verwenden?

      viele Grüße,
      schwane

      A paul53 2 Replies Last reply Reply Quote 0
      • A
        Ahnungsbefreit @schwane last edited by

        @schwane Generell sollte man Globale Scripts so weit wie möglich begrenzen, am besten ganz vermeiden. Jedes globale Script wird an komplett an jedes andere Script gehängt und braucht Resourcen. In 99% der Fälle kann man Scripte, die man überall braucht auch in einen "normalen" Ordner hängen und dann den Trigger (und evtl. notwendige Parameter) über eigene Datenpunkte in "0_userdata" organisieren.

        S 1 Reply Last reply Reply Quote 1
        • paul53
          paul53 @schwane last edited by

          @schwane sagte: Kann man diese Reihenfolge irgendwie ändern?

          Mit "copy & paste".

          1 Reply Last reply Reply Quote 0
          • S
            schwane @Ahnungsbefreit last edited by

            @ahnungsbefreit Danke für die Info. Aber es gibt keine andere Möglichkeit code wieder zu verwenden, bzw in mehrere Dateien auf zu teilen?

            Meine Idee war zB eine "Lighting" klasse zu implementieren und dann LivingroomLighting, BedroomLighting, etc davon erben zu lassen. Normalerweise würde ich da mehrere Dateien für erstellen und die dann über imports verknüpfen. Aber um so mehr ich von ioBroker mitbekomme scheint so eine Klassenstruktur sowieso nicht die Bevorzugte Architektur zu sein. Gibt es irgendwo einen Guide, wie man Scripte am besten organisiert?

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @schwane last edited by

              @schwane sagte: Aber es gibt keine andere Möglichkeit code wieder zu verwenden, bzw in mehrere Dateien auf zu teilen?

              Unter Node.js verwendet man dafür Node-Module.

              1 Reply Last reply Reply Quote 0
              • S
                schwane last edited by

                Schaffe es leide nicht Module irgendeiner Art (Javascript / Typescritp / Node) mit dem Scripteditor zum laufen zu bringen, ich glaube er erkennt die Pfade der anderen Dateien nicht richtig. Gibt es irgendwo eine Anleitung oder ein Beispiel dazu?

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @schwane last edited by paul53

                  @schwane sagte: die Pfade der anderen Dateien

                  Beispiel für eigene Node-Module unter "iobroker-data/modules":

                  const clock = require('../../../iobroker-data/modules/test.js');
                  
                  log(clock(new Date()));
                  

                  Inhalt der Datei "test.js":

                  'use strict';
                  module.exports = function (date) {
                     let hour = date.getHours();
                     let min = date.getMinutes();
                     if(min < 10) min = '0' + min;
                     return hour + ':' + min;
                  };
                  
                  S 1 Reply Last reply Reply Quote 0
                  • S
                    schwane @paul53 last edited by

                    @paul53 Danke! habe damit erst verstanden das ich es in einen anderen Ordner legen muss. Vorher hatte ich versucht das beide scrips über den Editor auf der Webplatform an zu legen. Also mit JavaScript funktioniert es jetzt. Eigendlich wollte ich aber in TypeScript programmieren und da habe ich dann noch ein bisschen länger dran gehangen. Habe es schließlich aber auch geschafft.

                    Für alle mit ähnlichem Problem:
                    Ich mich an dem vorletzten post in diesem Thread hier orientiert: Modulare Skripe
                    Anstatt dann in dem neuen node module in JavaScript zu programmieren habe ich dort TypeScript über npm als dev-dependency installiert. Jetzt kann ich dort mit TypeScript programmieren, und das Ergebnis per Import in ioBroker scripteditor benutzen. Nachteil ist das ich das externe TypeScript extra nochmal compilieren und dann Adapter neu starten muss. Allerdings kann ich so auf meinem Desktop in WebStorm entwickeln und dann am ende nur die compilierten .js Dateien synchronisieren. Bin also ganz zufrieden mit der Lösung.

                    Danke nochmal @paul53 und @Ahnungsbefreit für eure Hilfe!

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    765
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    275
                    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