【问题标题】:var mqtt = require('mqtt'); resulting in errorvar mqtt = 需要('mqtt');导致错误
【发布时间】:2013-09-19 14:06:25
【问题描述】:

我已经安装了“node.js”,然后从“node.js”命令行执行“npm install mqtt”来安装“mqtt.js”。现在要测试我正在尝试执行的“mqtt 客户端”: var mqtt = require('mqtt'); 这会导致错误提示:

  "Error: Cannot find module 'mqtt'
   at Function.Module._resolveFilename (module.js:338:15)
   at Function.Module._load (module.js:280:25)
   at Module.require (module.js:364:17)
   at require (module.js:380:17)
   at repl:1:12
   at REPLServer.self.eval (repl.js:110:21)
   at repl.js:249:20
   at REPLServer.self.eval (repl.js:122:7)
   at Interface.<anonymous> (repl.js:239:12)
   at Interface.EventEmitter.emit (events.js:95:17)"

【问题讨论】:

  • 您的node_modules 文件夹中是否有一个mqtt 文件夹与您执行的*.js 文件位于同一路径?
  • 我的 node_modules 文件夹中没有名为 mqtt 的文件夹。它只有一个文件夹 npm。
  • @Amberlamps :这是目录结构 - C:\Program Files\nodejs\node_modules\npm 。在这里面我有一个名为 node_modules 的文件夹。我已经使用 npm install 命令安装/下载了 express 和 mqtt。它已将该文件夹放在目录 C:\Users\I055406\node_modules 中。你在这里看到任何不匹配的地方。请耐心等待,因为我是这个主题的新手。我应该把 mqtt 和 express 放在里面有 npm 的 node_modules 文件夹中吗?
  • 试着把你的express和mqtt项目放在C:/Users/I055406/your_project/
  • 我面临的问题得到了解决......现在 var mqtt = require('mqtt');执行没有问题。但是我注意到我不能通过说 var client = new mqtt.MQTTClient(1883, '127.0.0.1', 'ClientID'); 创建客户端。它会导致错误提示 TypeError: undefined is not a function at repl:1:14 at REPLServer.self.eval (repl.js:110:21) at repl.js:249:20 at REPLServer.self.eval (repl. js:122:7) 但 var client = mqtt.createClient() 执行没有问题。你能帮忙吗?

标签: node.js mqtt


【解决方案1】:

首先,您需要添加 MQTT 库。 如果你在服务器上安装了 npm 包管理器,你应该运行npm install mqtt --save

详细信息:https://www.npmjs.com/package/mqtt

【讨论】:

    【解决方案2】:

    需要 Node.js 模块,请参考这篇教程,非常详细。
    http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm

    顺便说一句,createClient() 已被 mqtt 模块弃用,请改用connect()

    如果您想使用现成的在线代理测试您的 MQTT 客户端,请尝试http://www.robomq.io

    【讨论】:

      【解决方案3】:

      这是 Node 开发人员面临的常见问题。在 Unix 系统上工作时,有时它可能不允许您安装此类软件包。为此,您将需要sudo 权限。有时,软件包已安装但仅在您的本地模块中,当您尝试从目录外部导入它时,会发生错误。有时,您的编译器读取了您的依赖项,但无法在其中找到此包,此时您也面临此错误。 无论如何,不​​要担心。您只需按照以下步骤操作即可。

      1. 最佳实践是在开始开发之前使用npm init initialize 您的项目。这将初始化您的项目并生成package.json 文件。
      2. 然后,如果您想要任何库作为依赖项,请尝试使用 --savenpm install 命令。这会将您的依赖项保存在package.json 文件中。 例如npm install mqtt --save

      3. 如果安装后没有找到任何包,通过-g标志全局安装。 在您的系统中可以访问全局安装的软件包。例如npm install mqtt -g

      注意:Unix 系统需要SUDO 权限才能全局安装。

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        当您使用 node.js 的命令行时,它会搜索全局安装的节点模块,通常在 Linux 机器的目录 /usr/lib/node_modules 中。 当您运行 npm install 时,节点模块将本地安装在启动节点终端的同一目录中。 如果要在 node 终端访问 node 模块,需要运行 npm install mqtt -g 其中 -g 代表全局安装。 通常Linux机器不允许普通用户访问/usr/lib/node_modules,所以最好以sudo npm install mqtt -g运行它

        【讨论】:

        • sudo: npm: command not found, 给出这个错误
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多