【问题标题】:Import MQTT NPM module into NativeScript将 MQTT NPM 模块导入 NativeScript
【发布时间】:2016-08-05 17:10:24
【问题描述】:

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

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

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

com.tns.NativeScriptException:找不到模块:“mqtt”,相对 到:/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)。

【问题讨论】:

    标签: javascript node.js telerik nativescript


    【解决方案1】:

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

    mqtt.js 的第一行是

    #!/bin/node...
    

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

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

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

    只看mqtt库的依赖;您在 NativeScript 上使用此功能的几率看起来非常渺茫。

    【讨论】:

    • 我放弃了尝试使用该模块,而是尝试使用 Poho MQTT 库的 JavaScript 实现 (eclipse.org/paho/clients/js)。我用require("./lib/mqttws31"); 引用了该文件,并用require("timer") 语句替换了所有window.timer。从github.com/NathanaelA/nativescript-websockets 安装模块后,我还在mqttws31.js 文件的顶部添加了require("nativescript-websockets");。我还注释掉了引用localstorage 的代码。我正在让应用程序运行,但它似乎没有做任何事情。
    • 谢谢,我会这样做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多