将 MQTT NPM 模块导入 NativeScript

Import MQTT NPM module into NativeScript

我正在尝试使用 MQTT npm package 作为我正在构建的 NativeScript 应用程序的一部分。

当我尝试要求它时,我 运行 遇到了问题。

如示例所示,我的代码使用 var mqtt = require('mqtt');,但是在尝试编译 NativeScript 应用程序时,出现以下错误:

com.tns.NativeScriptException: Failed to find module: "mqtt", relative to :/app/tns_modules.

我已经确认 mqtt 文件夹在我的 node_modules 文件夹中,我尝试创建一个 tns_modules 文件夹并将 mqtt 文件夹也复制到那里。

但是我仍然遇到错误。我尝试加载 knock-knock-jokes 包并且加载完美。

我使用的是 2016 年 4 月 13 日的最新版本的 Node 和 NativeScript(Node 为 4.4.0,NativeScript 为 1.7.1)。

好的,我试过了,看看为什么会这样。

mqtt.js 的第一行是

#!/bin/node...

这是无效的 JavaScript 代码。 Node 已被编程为忽略它;但 NativeScript 没有。 (可能值得提出增强请求..)

所以当它加载这个文件来解析它时,它解析失败并且returns它不可用。 (在解析问题上并不总是最好的错误)

但是,如果您修复该错误,您将 运行 遇到更多问题。然后它会抱怨找不到 "net" 库。 NativeScript 没有内置的网络库。据我所知,还没有人创建 NativeScript 的网络替代品。因此,在很多情况下,您可以按原样使用节点模块;但是如果他们调用任何依赖于内置节点库的东西;不幸的是,它们目前不能在 NativeScript 中工作,因为它们不存在等效的库。

只看mqtt库的依赖;乍一看,你在 NativeScript 上实现这一点的可能性很小。