Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Typprüfung mit javascript.d.ts

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

Typprüfung mit javascript.d.ts

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
40 Beiträge 3 Kommentatoren 4.7k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • AlCalzoneA Offline
    AlCalzoneA Offline
    AlCalzone
    Developer
    schrieb am zuletzt editiert von
    #30

    Schau dir mal meinen Screenshot bzw. javascript.d.ts genau an. Auch diese Datei muss in ein Modul "gezwungen" werden. Anders als bei JS reicht require nicht aus, es muss das import keyword fallen.

    // entweder so
    import * as fs from "fs";
    // oder so
    import fs = require("fs");
    

    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

    1 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      robsdobs
      schrieb am zuletzt editiert von
      #31

      Hallo,

      ich hab auch noch mal eine Frage…

      Wenn ich am Anfang der Datei die Referenz auf die Definitionsdatei setze

      /// 
      

      klappt das im VS Code super, aber im IOBroker Admin bekomme ich beim Compilieren dann natürlich einen Fehler:

      12:40:00.730	[error]	javascript.0 script.js.common.xTest_ts: TypeScript compilation failed: /// ^ ERROR: File '/opt/iobroker/node_modules/iobroker.javascript/common/javascript.d.ts' not found. 
      

      Daher muss ich das vorher immer bearbeiten (mache aus den /// ein ////) oder habe Pech - wenn ich das vergesse. Da ich mit dem "js2fs" plugin arbeite muss ich das immer vor jedem Speichern im VS Code machen - wo das vergessen schon mal häufiger passiert.

      Gibt es hier einen besseren Weg?

      Danke & Gruß

      Robert

      Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #32

        Du arbeitest scheinbar mit TypeScripts.

        Der TypeScript-Modus lädt die Datei automatisch für dich, da sie bereits in den JavaScript-Adapter integriert ist und TypeScript zwangsläufig diese Definitionen benötigt.

        Du musst VSCode nur beibringen, dass es sich bei deiner Ordnerstruktur um ein Projekt handelt. Das geht mit einer leeren tsconfig.json im Hauptordner, danach werden .d.ts-Dateien automatisch eingebunden:
        1097_unbenannt.png
        Besser ist natürlich eine passende tsconfig.json, z.B. für NodeJS 4+

        {
        	"compilerOptions": {
        		"target": "es5",
        		"lib": [
        			"es6",
        		]
        	},
        }
        

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • R Offline
          R Offline
          robsdobs
          schrieb am zuletzt editiert von
          #33

          Danke, werde ich heute Abend ausprobieren.

          Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

          1 Antwort Letzte Antwort
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            schrieb am zuletzt editiert von
            #34

            @AlCalzone:

            Schau dir mal meinen Screenshot bzw. javascript.d.ts genau an. Auch diese Datei muss in ein Modul "gezwungen" werden. Anders als bei JS reicht require nicht aus, es muss das import keyword fallen.

            // entweder so
            import * as fs from "fs";
            // oder so
            import fs = require("fs");
            ```` `  
            

            Verrückt. kaum macht man es richtig, funktioniert es. Nun ja, fast ;-)

            Beim Testordner mit der Funktion abc() funktioniert es nun einwandfrei.

            Nur mein eigentlicher Arbeitsbereich macht die Selben Probleme, wie oben beschrieben.

            Dort werden die Funktionen zwar erkannt, die Parameter aber weiterhin mit any angezeigt und ohne Beschreibung.

            Zur Eingrenzung habe ich dann meine globale Typedatei in den Testordner mit der abc() Funktion kopiert.

            Hier funktionieren die Funktionen aus der globalen Datei auch einwandfrei.

            Zur weiteren Eingrenzung habe ich dann auch die jsonconfig.json in den Testordner kopiert, um sicherzustellen, dass die Probleme nicht durch diese Datei kommen. Auch hier funktioniert es einwandfrei.

            Problem gefunden

            argh… während ich das hier tippe habe ich dann noch den Ordner global mit den globalen Skripten in den Testordner reinkopiert.

            In diesem Moment funktioniert es nicht mehr sauber. :oops:

            Die globalen Funktionen haben noch nicht das require("fs"); am Anfang des Skripts.

            Werde dann jetzt erst einmal alle Skripte mit dem require("fs");versehen... sind ein paar... :-)

            Danke für Deine Mühe!!!

            Adapter: Fritzbox, Unify Circuit
            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

            1 Antwort Letzte Antwort
            0
            • R Offline
              R Offline
              robsdobs
              schrieb am zuletzt editiert von
              #35

              Danke, bei mir funktioniert es prinzipiell.

              Jetzt habe ich jedoch ein anderes Problem festgestellt:
              1367_2018-04-03_21h34_40.png

              Das fehlt in der javascript.d.ts tatsächlich.

              In der Doku steht: "Same as javascript setTimeout."

              Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

              1 Antwort Letzte Antwort
              0
              • AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #36

                @robsdobs:

                Das fehlt in der javascript.d.ts tatsächlich.

                In der Doku steht: "Same as javascript setTimeout." `
                Korrekt, das kommt auch nicht in die javascript.d.ts, da es sich um Grundfunktionalität handelt. Dein Problem scheint aufzutreten, wenn im Ordner eine tsconfig.json existiert. Warum auch immer.

                Beheben kannst du es, indem du die NodeJS-Typings im Arbeitsbereich installierst.

                npm i @types/node
                
                

                für die neueste Version, bzw.

                npm i @types/node@4
                

                für NodeJS 4.

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                1 Antwort Letzte Antwort
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #37

                  Wen es interessiert, ich habe den VSCode-Editor ("Monaco") in den Skriptadapter eingebaut.

                  Das ganze benötigt noch ein wenig Arbeit, da insbesondere der Wechsel von Blockly zu JS nicht funktioniert. Aber wer das nicht benötigt, darf gerne schon mal testen:

                  Installation aus eigener URL: https://github.com/AlCalzone/ioBroker.j … ter-editor

                  --

                  1097_unbenannt.png

                  –

                  1097_unbenannt2.png

                  –

                  1097_bild1.png

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Antwort Letzte Antwort
                  0
                  • R Offline
                    R Offline
                    robsdobs
                    schrieb am zuletzt editiert von
                    #38

                    Super Sache!

                    Ich vermute mal das ist unabhängig vom Editor. Mit der Version 3.7.0 des Javascript Adapters funktionieren jetzt leider meine Scripte alle nicht. Es kommt beim Starten überall der Fehler "ReferenceError: exports is not defined":

                    javascript.0	2018-05-18 20:19:02.802	error	at ContextifyScript.Script.runInContext (vm.js:35:29)
                    javascript.0	2018-05-18 20:19:02.802	error	at script.js.common.Status.Stauberechnung_ts:2:23
                    javascript.0	2018-05-18 20:19:02.802	error	ReferenceError: exports is not defined
                    javascript.0	2018-05-18 20:19:02.802	error	^
                    javascript.0	2018-05-18 20:19:02.802	error	Object.defineProperty(exports, "__esModule", { value: true });
                    javascript.0	2018-05-18 20:19:02.800	error	script.js.common.Status.Stauberechnung_ts: script.js.common.Status.Stauberechnung_ts:2
                    javascript.0	2018-05-18 20:19:02.796	info	script.js.common.Status.Stauberechnung_ts: TypeScript compilation successful
                    javascript.0	2018-05-18 20:19:02.686	info	script.js.common.Status.Stauberechnung_ts: compiling TypeScript source...
                    javascript.0	2018-05-18 20:19:02.686	error	at ContextifyScript.Script.runInContext (vm.js:35:29)
                    javascript.0	2018-05-18 20:19:02.685	error	at script.js.common.Status.TüreFenster_ts:2:23
                    javascript.0	2018-05-18 20:19:02.685	error	ReferenceError: exports is not defined
                    javascript.0	2018-05-18 20:19:02.685	error	^
                    javascript.0	2018-05-18 20:19:02.685	error	Object.defineProperty(exports, "__esModule", { value: true });
                    javascript.0	2018-05-18 20:19:02.685	error	script.js.common.Status.TüreFenster_ts: script.js.common.Status.TüreFenster_ts:2
                    javascript.0	2018-05-18 20:19:02.680	info	script.js.common.Status.TüreFenster_ts: TypeScript compilation successful
                    javascript.0	2018-05-18 20:19:02.501	info	script.js.common.Status.TüreFenster_ts: compiling TypeScript source...
                    javascript.0	2018-05-18 20:19:02.501	error	at ContextifyScript.Script.runInContext (vm.js:35:29)
                    javascript.0	2018-05-18 20:19:02.501	error	at script.js.common.System.AlarmControl_ts:2:23
                    javascript.0	2018-05-18 20:19:02.501	error	ReferenceError: exports is not defined
                    javascript.0	2018-05-18 20:19:02.501	error	^
                    javascript.0	2018-05-18 20:19:02.500	error	Object.defineProperty(exports, "__esModule", { value: true });
                    javascript.0	2018-05-18 20:19:02.489	error	script.js.common.System.AlarmControl_ts: script.js.common.System.AlarmControl_ts:2
                    javascript.0	2018-05-18 20:19:02.486	info	script.js.common.System.AlarmControl_ts: TypeScript compilation successful
                    javascript.0	2018-05-18 20:19:02.420	info	script.js.common.System.AlarmControl_ts: compiling TypeScript source...
                    

                    Hab mal ein Issue auf https://github.com/ioBroker/ioBroker.javascript/issues/118 eröffnet.

                    Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

                    1 Antwort Letzte Antwort
                    0
                    • AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #39

                      Fixed in https://github.com/ioBroker/ioBroker.ja … t/pull/119

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      1 Antwort Letzte Antwort
                      0
                      • R Offline
                        R Offline
                        robsdobs
                        schrieb am zuletzt editiert von
                        #40

                        Danke!

                        Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

                        1 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        900

                        Online

                        32.4k

                        Benutzer

                        81.4k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe