2016-04-14 15 views
0

私が構築しているNativeScriptアプリケーションの一部としてMQTT npm packageを使用しようとしています。MQTT NPMモジュールをNativeScriptにインポート

私はそれを要求しようとすると問題に遭遇しています。

私のコードは例が示すようvar mqtt = require('mqtt');を使用しますが、NativeScriptアプリケーションをコンパイルしようとしたとき、私は次のエラーを取得する:

com.tns.NativeScriptException:モジュールが見つかりませんでした:「MQTT」を、相対 に:/ app/tns_modules。

私はMQTTフォルダが私のnode_modulesフォルダ内にあることを確認した、と私はtns_modulesフォルダを作成し、そこにもMQTTフォルダをコピーしてみました。

しかし、まだエラーが発生しています。ノックノックジョークパッケージをロードしようとしましたが、それは完全にロードされます。

私はノードとNativeScriptの最新バージョンを2016年4月13日(ノードの場合は4.4.0、NativeScriptの場合は1.7.1)として使用しています。

答えて

1

わかりました。これを試して、なぜこれが起こっているのかを確認しました。

mqtt.jsの非常に最初の行は、無効なJavaScriptコードで

#!/bin/node... 

です。ノードはそれを無視するようにプログラムされています。 NativeScriptはそうではありません。

したがって、このファイルを解析して解析すると、解析に失敗し、利用できないことが返されます。 (解析の問題では必ずしも最良のエラーであるとは限りません)

ただし、このエラーを修正すると、より多くの問題が発生します。それから、 "ネット"ライブラリが見つからないと不平を言うでしょう。 NativeScriptにはネットライブラリが組み込まれていません。私の知る限り、NativeScriptのネット置換はまだ作成されていません。したがって、多くの場合、ノードモジュールはそのまま使用できます。しかし、それらが組み込みのノード・ライブラリーに依存するものを呼び出す場合、残念ながらNativeScriptで動作しないのは、対応するライブラリが存在しないためです。

mqttライブラリの依存関係を調べてみましょう。これをNativeScriptで動作させることになる確率は、かなりスリムで一目瞭然です。

+0

私はそのモジュールの使用をやめ、代わりにPoho MQTTライブラリのJavaScript実装(https://www.eclipse.org/paho/clients/js/)を使用しようとしました。 ファイル 'require(" ./lib/mqttws31 ");' を参照し、すべてのwindow.timerを 'require(" timer ")' ステートメントに置き換えました。また、https://github.com/NathanaelA/nativescript-websocketsからモジュールをインストールした後、 'require(" nativescript-websockets ");をmqttws31.jsファイルの先頭に追加しました。 また、 'localstorage'を参照しているコードの部分をコメントアウトしました。私はアプリケーションを実行するようになっていますが、何もしないようです。 – MorneZaayman

+0

おそらく、そのライブラリの別の質問を開くべきです... – Nathanael

+0

ありがとう、私はそれをやるでしょう。 – MorneZaayman

関連する問題