Typprüfung mit javascript.d.ts

Fragen zum Skripten mit ioBroker.javascript
Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 02.04.2018, 13:51

AlCalzone hat geschrieben:
02.04.2018, 13:33
Kannst du mal ein Minimalbeispiel (Ordnerstruktur mit Dateiinhalten) erzeugen, damit ich dein Problem nachvollziehen kann?
Und ein Minimalbeispiel für eine fehlende Meldung bei fehlender Deklaration:
Beispiel Typeprüfung 2.png
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
AlCalzone
guru
Beiträge: 2508
Registriert: 01.03.2016, 15:16

Re: Typprüfung mit javascript.d.ts

Beitrag von AlCalzone » 02.04.2018, 19:11

Hier die Erklärung für das Verhalten.

https://www.typescriptlang.org/docs/han ... dules.html
Starting with ECMAScript 2015, JavaScript has a concept of modules. TypeScript shares this concept.

Modules are executed within their own scope, not in the global scope; this means that variables, functions, classes, etc. declared in a module are not visible outside the module unless they are explicitly exported using one of the export forms. Conversely, to consume a variable, function, class, interface, etc. exported from a different module, it has to be imported using one of the import forms.

Modules are declarative; the relationships between modules are specified in terms of imports and exports at the file level.

Modules import one another using a module loader. At runtime the module loader is responsible for locating and executing all dependencies of a module before executing it. Well-known modules loaders used in JavaScript are the CommonJS module loader for Node.js and require.js for Web applications.

In TypeScript, just as in ECMAScript 2015, any file containing a top-level import or export is considered a module. Conversely, a file without any top-level import or export declarations is treated as a script whose contents are available in the global scope (and therefore to modules as well).
Da kannst du leider fast nichts dran ändern, das ist eine TypeScript-Eigenheit. Du kannst aber erzwingen, dass eine JS-Datei als Modul gehandhabt wird. Das geht fast genauso wie ich in der .d.ts-Datei gemacht habe, mit einem Dummy-Import (bzw. require).
Unbenannt.PNG
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 02.04.2018, 19:30

AlCalzone hat geschrieben:
02.04.2018, 19:11
Hier die Erklärung für das Verhalten.

https://www.typescriptlang.org/docs/han ... dules.html
AlCalzone hat geschrieben: Da kannst du leider fast nichts dran ändern, das ist eine TypeScript-Eigenheit. Du kannst aber erzwingen, dass eine JS-Datei als Modul gehandhabt wird. Das geht fast genauso wie ich in der .d.ts-Datei gemacht habe, mit einem Dummy-Import (bzw. require).
Unbenannt.PNG
Ich danke Dir für Deine Mühe und Geduld! Wahnsinn!
Vor allem für die mitgelieferte Erklärung :!: :idea:

Werde dass dann mit dem "require("fs");" Dummy umgehen.


Du bist doch bestimmt tausendmal intensiver mit vscode unterwegs.
Organisierst Du Dein Skriptverzeichnis anders oder nutzt Du eine Namensgebung, mit der das nicht passieren kann?

Ich habe das Gefühl, bei mir ist noch viel Luft nach oben :mrgreen:
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 02.04.2018, 20:01

Bei dem Thema Typprüfung lass ich nicht locker :mrgreen:

Das Thema bringt mich einen Riesenschritt weiter, läuft aber an vielen Stellen noch nicht rund.
Das nächste "Problem".

Die Infos für die eigenen globalen Funktionen erscheinen erst, wenn der erste Parameter begonnen wurde zu tippen.
Bei den Funktionen aus dem Javascript-Adapter kommt die Hilfe direkt nach der Klammer.

Wie es jetzt bei mir ist, ist es nur bedingt hilfreich, siehe:
typecheck 4.png
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
AlCalzone
guru
Beiträge: 2508
Registriert: 01.03.2016, 15:16

Re: Typprüfung mit javascript.d.ts

Beitrag von AlCalzone » 02.04.2018, 21:51

Hmm dazu müsste ich deine global-ts-Datei mal sehen. Eigentlich müsste das gleich funktionieren. Bei mir gehts:
Unbenannt.PNG
Auf jeden Fall kannst du per STRG+Leertaste das Fenster auch manuell öffnen.
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 02.04.2018, 21:53

AlCalzone hat geschrieben:
02.04.2018, 21:51
Hmm dazu müsste ich deine global-ts-Datei mal sehen. Eigentlich müsste das gleich funktionieren. Bei mir gehts:

Auf jeden Fall kannst du per STRG+Leertaste das Fenster auch manuell öffnen.
Die global-ts:
Spoiler: Show hidden text

Code: Alles auswählen

import child_process = require("child_process");

// tslint:disable:no-namespace
declare global {
	
	namespace iobGlobal {

		type loglevel = "debug2" | "debug1" | "debug" | "info" | "warn" | "error";
		
	}


	// Logikwerte:
	// ===========================================
	/**
	 * true/false als Ergebnis ob der aktuelle Tag ein Arbeitstag ist
	 */
	function arbeitstag(): boolean;

	/**
	 * true/false als Ergebnis ob der aktuelle Tag ein Urlaubstag ist
	 */
	function urlaubstag(): boolean;

	/**
	 * true wenn die aktuelle Zeit im angegebenen Zeitraum liegt
	 * @param  strLower Startzeit formatiert als hh:mm:ss
	 * @param  strUpper Endzzeit formatiert als hh:mm:ss
	 */
	function isTimeInRange(strLower:string, strUpper:string): boolean;



	// Werte ausgeben
	// ===========================================
	/**
	 * gibt den Wochentag (Montag, Dienstag, ...) als Text zurück
	 */
	function wochentag(): string;

	/**
	 * Gibt das Delta zwischen einem im Datenpunkt gespeicherten
	 * Epoch Wert und der aktuellen Zeit formatiert zurück.
	 * Der Datenpunkt wird danach aktualisiert.
	 * Zum speichern einer Zeit in einen Datenpunkt kann die Funktion
	 * dateEpochNow() verwendet werden.
	 * @param datenpunkt ID, in der die letzt Änderung im Epoche steht.
	 */
	function deltazeit(datenpunkt:string): string;

	/**
	 * gibt das aktuelle Datum & die Zeit formatiert aus
	 * Defaultformat: "YYYY-MM-DD hh:mm:ss"
	 * @param  format Format der Ausgabe, Format wie bei formateDate()
	 * @param  msBool true: ms im Format .ms werden angehängt
	 */
	function dateNow(format?:string,msBool?:boolean): string;

	/**
	 * Gibt die Anzahl der gefundenen Subscriptions zurück.
	 * Listet alle Subscriptions innerhalb der Javascript-Instanz auf, die dem Filter entsprechen, im Log auf.
	 * Defaultformat: "YYYY-MM-DD hh:mm:ss"
	 * @param  scriptname (optional) "alle", "Name des Skripts", "FEQ", usw.
	 * @param  level (optional) loglevel für logs, default: "info"
	 * // Filter (scriptname):
	 * --------------------
	 * sucht den String in den überwachten Datenpunkten der Javascript-Instanz
     * und sucht den String in den Scriptnamen innerhalb der Javascript-Instanz
	 * keine Angabe -> Filter = "alle" (alle Subscriptions der Instanz)
	 * 
	 * loglevel
	 * --------
	 * loglevel = "debug2" | "debug1" | "debug" | "info" | "warn" | "error"
	 * 
	 * Beispiele:
	 * ----------
	 * prinSubs();				listet alle Subscriptions innerhalb der Javascript-Instanz auf
	 * prinSubs("alle");        listet alle Subscriptions innerhalb der Javascript-Instanz auf
	 * printSubs("Skriptname"); alle Subscriptions innerhalb des aufrufenden Scripts
	 * printSubs("FEQ");        alle Subscriptions, die im Script oder Objekt "FEQ" enthalten
	 */
	function printSubs(scriptname?:string,level?:iobGlobal.loglevel): number;

	/**
	 * Gibt eine zufällige Zahl zwischen min und max zurück
	 * @param min kleinster möglicher Wert der Zufahlszahl
	 * @param max größter möglicher Wert der Zufahlszahl
	 */
	function rand(min:number,max:number) : number;


	// Funktionen
	// ===========================================

	/**
	 * Rundet eine Zahl auf die angegebenen Stellen
	 * @param  wert Zahl, die gerundet werden soll
	 * @param  stellen Anzahl der Stellen
	 */
	function runden(wert: number, stellen: number): number;

	/**
	 * Ansage über den sayit Adapter
	 * @param  text Ansage, die abgespielt werden soll
	 * @param  vol (optional) Lautstärke der Ansage von 1-100
	 * @param  instanz? (optional) ohne Angabe: default Instanz. Mit Angabe: sayit Instanz
	 */
	function sayit(text: string, vol?: number, instanz?: number): void;
	
	
	/**
	 * formatiert eine Übergabe in Sekunden zu einem lesbaren String
	 * @param  sekunden Sekunden, die lesbar ausgegeben werden sollen
	 */
	function sek2txt(sekunden:number | string): string;

	/**
	 * Loglevel innerhalb eines Javascripts
	 * das Script muss am die Variable des gewünschten Loglevels definiert haben, z.B.:
	 * var loglevel = "info";
	 * @param  logtext Text, der in der Logausgabe erscheinen soll
	 * @param  level "debug2" | "debug1" | "debug" | "info" | "warn" | "error"
	 * @param  color? (optional) ohne Angabe: vordefinierte Farbe für den level, mit Angabe: gültige html Farbe
	 * Rückgabe: verwendeter Loglevel zur Information
	 */
	function logs(logtext:string,level:iobGlobal.loglevel,color?:string):string;

	/**
	 * Schreibt einen Text mit Zeitstempel in eine Logdatei
	 * Datei: /opt/iobroker/iobroker-data/scripts-logf.log
	 * @param  text Text, der mit einem Zeitstempel in die Logdatei geschrieben werden  soll
	 */
	function logf(text:string);

	/**
	 * Fügt einen Eintrag (Text) einer Ereignisliste hinzu
	 * @param text Eintrag, der der Liste hinzugefügt werden soll. Formatierungen mit html Tags möglich
	 * @param list (optional) Liste, in der der Eintrag erscheinen soll. Ohne Angabe: Liste "default"
	 * @param color (optional) wenn die ganze Zeile mit einer html Farbe eingefärbt werden soll
	 */
	function event(text: string, list?: string, color?: string) : void;



	// Helfer:
	// ===========================================
	/**
	 * liefere Anzahl n nbsp in utf-8, wenn str nicht angegeben oder n-mal str
	 * @param n Anzahl von nbsp;, bzw. wenn str angegeben: ANzahl des Strings in str
	 * @param str (optional) String, welche n mal erzeugt wird
	 */
	function fill(n:number,str?:string): string;

	/**
	 * gibt das aktuelle Datum in Epoch zurück
	 */
	function dateEpochNow() : number;

	/**
	 * entfernt aus einem html String die html Tags
	 */
	function html2str(html:string) : number;


	// Workaround, Fehler in der ioBroker Typprüfung
	// ===========================================
	function getSubscriptions(): any;

	const name: string;

}

STRG+Leertaste probiere ich direkt
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 02.04.2018, 22:15

So etwas getestet.

Neuer Ordner, zwei Testdateien angelegt (test.js und test.d.ts).

Es verhält sich schon anders als bei Dir, aber besser als in meiner Arbeitsumgebung.

Die Funktion wird während des tippens nicht vorgeschlagen.
Erst, wenn ich "Klammer auf" drücke erscheint die Beschreibung.
typecheck 5.png
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 02.04.2018, 22:19

Die gleichen Dateien in einem Arbeitsordner in meinem Skript Arbeitsverzeichnis:
typecheck 6.png

Wenn ich nun die "Klammer auf drücke, wird abc gegen AbortController( ersetzt.
Wenn ich das nicht will, muss ich direkt nach abc die [ESC] Taste drücken.

Du hast require("fs"); in der *.d.ts Datei gesetzt. Reicht das aus Deiner Sicht dort?
Ich hätte das jetzt bei jedem Skript davor gesetzt.
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 02.04.2018, 22:30

In meinem Arbeitsbereich verhält sich vscode total schizophren :shock:
typecheck 7.png

tippe ich abc ein kommen andere Vorschläge.
Ich muss ESC drücken, damit mit der Klammer auf das abc nicht durch einen Vorschlag ersetzt wird.

In diesem Moment erscheint der Hilfetext zur Funktion abc().
Gleichzeitig wird abc unterstrichen und angemeckert, dass die Funktion unbekannt ist.
Verlasse ich einmal die Klammern () verschwindet der Hilfetext und tauch auch nicht mehr auf.
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

Benutzeravatar
AlCalzone
guru
Beiträge: 2508
Registriert: 01.03.2016, 15:16

Re: Typprüfung mit javascript.d.ts

Beitrag von AlCalzone » 03.04.2018, 08:06

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.

Code: Alles auswählen

// entweder so
import * as fs from "fs";
// oder so
import fs = require("fs");
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

robsdobs
professional
Beiträge: 207
Registriert: 18.07.2016, 20:44

Re: Typprüfung mit javascript.d.ts

Beitrag von robsdobs » 03.04.2018, 11:45

Hallo,

ich hab auch noch mal eine Frage...

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

Code: Alles auswählen

/// <reference path="javascript.d.ts" />
klappt das im VS Code super, aber im IOBroker Admin bekomme ich beim Compilieren dann natürlich einen Fehler:

Code: Alles auswählen

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

Benutzeravatar
AlCalzone
guru
Beiträge: 2508
Registriert: 01.03.2016, 15:16

Re: Typprüfung mit javascript.d.ts

Beitrag von AlCalzone » 03.04.2018, 12:46

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:
Unbenannt.png
Besser ist natürlich eine passende tsconfig.json, z.B. für NodeJS 4+

Code: Alles auswählen

{
	"compilerOptions": {
		"target": "es5",
		"lib": [
			"es6",
		]
	},
}
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

robsdobs
professional
Beiträge: 207
Registriert: 18.07.2016, 20:44

Re: Typprüfung mit javascript.d.ts

Beitrag von robsdobs » 03.04.2018, 15:35

Danke, werde ich heute Abend ausprobieren.

Benutzeravatar
ruhr70
guru
Beiträge: 2274
Registriert: 24.02.2015, 19:40

Re: Typprüfung mit javascript.d.ts

Beitrag von ruhr70 » 03.04.2018, 16:01

AlCalzone hat geschrieben:
03.04.2018, 08:06
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.

Code: Alles auswählen

// 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!!!
Intel NUC (NUC6i5SYH) -> ESXi 6 > VM Ubuntu 16.04 ioBroker (redis) > VM Ubuntu 16.04 mySQL
Slave: Pi 3 ohne SD (Boot USB SLC)
CCU2, hue 2, DS 1512+, WeMos, Harmony Hub, Alexa
Adapter: Fritzbox / Skripte: dynamic hue, Bluetooth Scanner, WIFFI-wz

robsdobs
professional
Beiträge: 207
Registriert: 18.07.2016, 20:44

Re: Typprüfung mit javascript.d.ts

Beitrag von robsdobs » 03.04.2018, 20:36

Danke, bei mir funktioniert es prinzipiell.

Jetzt habe ich jedoch ein anderes Problem festgestellt:
2018-04-03_21h34_40.png
Das fehlt in der javascript.d.ts tatsächlich.

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

Benutzeravatar
AlCalzone
guru
Beiträge: 2508
Registriert: 01.03.2016, 15:16

Re: Typprüfung mit javascript.d.ts

Beitrag von AlCalzone » 04.04.2018, 07:32

robsdobs hat geschrieben:
03.04.2018, 20:36
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.

Code: Alles auswählen

npm i @types/node
für die neueste Version, bzw.

Code: Alles auswählen

npm i @types/node@4
für NodeJS 4.
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

robsdobs
professional
Beiträge: 207
Registriert: 18.07.2016, 20:44

Re: Typprüfung mit javascript.d.ts

Beitrag von robsdobs » 04.04.2018, 20:13

Danke!

Benutzeravatar
AlCalzone
guru
Beiträge: 2508
Registriert: 01.03.2016, 15:16

Re: Typprüfung mit javascript.d.ts

Beitrag von AlCalzone » 18.05.2018, 14:38

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

--
Unbenannt.PNG
Autocomplete
--
Unbenannt2.PNG
Syntax-Prüfung und -Hilfe
Unbenannt2.PNG (9.13 KiB) 206 mal betrachtet
--
Bild1.png
automatische Formatierung
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

robsdobs
professional
Beiträge: 207
Registriert: 18.07.2016, 20:44

Re: Typprüfung mit javascript.d.ts

Beitrag von robsdobs » 18.05.2018, 19:40

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":

Code: Alles auswählen

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 Github eröffnet.

Benutzeravatar
AlCalzone
guru
Beiträge: 2508
Registriert: 01.03.2016, 15:16

Re: Typprüfung mit javascript.d.ts

Beitrag von AlCalzone » 24.05.2018, 13:12

Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

Antworten