2016-04-14 4 views
0

Ich versuche MQTT npm package als Teil einer NativeScript-Anwendung, die ich baue, zu verwenden.Importieren MQTT NPM-Modul in NativeScript

Ich habe ein Problem, wenn ich versuche, es zu verlangen.

Mein Code verwendet die var mqtt = require('mqtt'); wie das Beispiel zeigt, aber beim Versuch, die NativeScript Anwendung zu kompilieren, erhalte ich folgende Fehlermeldung:

com.tns.NativeScriptException: Fehler Modul zu finden: „MQTT“, relativ zu:/app/tns_modules.

Ich habe festgestellt, dass der MQTT Ordner in meinem node_modules Ordner ist, und ich versuchte es auch einen tns_modules Ordner und Kopieren der MQTT Ordner zu erstellen.

Allerdings bekomme ich immer noch den Fehler. Ich habe versucht, das Knock-Knock-Witze-Paket zu laden, und das lädt perfekt.

Ich verwende die neuesten Versionen von Node und NativeScript wie 13. April 2016 (4.4.0 für Node und 1.7.1 für NativeScript).

Antwort

1

Ok, ich habe das ausprobiert, um zu sehen, warum das passiert.

Die erste Linie von mqtt.js ist

#!/bin/node... 

Welche ungültig JavaScript-Code. Der Knoten wurde so programmiert, dass er ignoriert wird. aber NativeScript nicht. (Könnte eine Verbesserungsanfrage wert sein ..)

Also, wenn es diese Datei lädt, um es zu analysieren, kann es nicht analysieren und gibt zurück, dass es nicht verfügbar ist. (Nicht immer der beste Fehler bei Parser-Problemen)

Aber wenn Sie diesen Fehler beheben, werden Sie in mehr Probleme stoßen. Es wird sich dann beschweren, die "net" -Bibliothek nicht zu finden. In NativeScript ist keine Netzbibliothek eingebaut. Nach meinem Wissen hat noch niemand einen Netzersatz für NativeScript erstellt. In vielen Fällen können Sie also Knotenmodule unverändert verwenden. aber wenn sie irgendetwas aufrufen, das von einer eingebauten Knotenbibliothek abhängt; Leider funktionieren sie momentan nicht in NativeScript, da es keine entsprechende Bibliothek gibt.

Betrachten Sie nur die Abhängigkeiten der MQTT-Bibliothek; Die Wahrscheinlichkeit, dass dies auf NativeScript funktioniert, sieht auf den ersten Blick ziemlich schmal aus.

+0

Ich habe es aufgegeben, dieses Modul zu verwenden und stattdessen versucht, die JavaScript-Implementierung der Poho MQTT-Bibliothek zu verwenden (https://www.eclipse.org/paho/clients/js/). Ich referenzierte die Datei mit 'require (" ./ lib/mqttws31 ");' und ersetzt alle window.timers mit 'require (" timer ")' Anweisungen. Ich habe auch 'require (" nativescript-websockets ");' an den Anfang der mqttws31.js-Datei nach der Installation des Moduls von https://github.com/NathanaelA/nativescript-websockets hinzugefügt. Ich habe auch das bisschen Code auskommentiert, das sich auf 'localstorage' bezieht. Ich bekomme die Anwendung zum Ausführen, aber es scheint nichts zu tun. – MorneZaayman

+0

Sie sollten wahrscheinlich eine andere Frage für diese Bibliothek öffnen ... – Nathanael

+0

Danke, ich werde das tun. – MorneZaayman