我试图将MQTT npm package用作正在构建的NativeScript应用程序的一部分。
尝试要求时遇到问题。
我的代码如示例所示使用var mqtt = require('mqtt');
,但是当尝试编译NativeScript应用程序时,出现以下错误:
com.tns.NativeScriptException:无法找到相对的模块“ mqtt”
到:/ app / tns_modules。
我已验证mqtt文件夹位于我的node_modules
文件夹中,并且尝试创建一个tns_modules
文件夹并将mqtt文件夹也复制到该文件夹中。
但是我仍然遇到错误。我尝试加载敲敲笑话包,并且加载得很完美。
我正在使用截至2016年4月13日的最新版本的Node和NativeScript(Node为4.4.0,NativeScript为1.7.1)。
最佳答案
好的,我尝试了一下,看看为什么会这样。
mqtt.js的第一行是
#!/bin/node...
这是无效的JavaScript代码。节点已被编程为忽略它;但是NativeScript没有。 (可能值得提出增强请求。)
因此,当它加载此文件以对其进行解析时,它将无法解析并返回不可用的信息。 (在解析问题上,并非总是最好的错误)
但是,如果您修复该错误,则会遇到更多问题。然后它将抱怨找不到“ net”库。 NativeScript没有内置的网络库。据我所知,还没有人为NativeScript创建网络替代品。因此,在许多情况下,您可以按原样使用节点模块。但是,如果它们调用依赖于内置节点库的任何内容,则为不幸的是,由于它们不存在等效库,因此它们当前无法在NativeScript中工作。
只看mqtt库的依赖关系;一眼就能看到在NativeScript上运行的可能性很小。