3

我已经安装了“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)"
4

4 回答 4

3

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

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

于 2017-09-25T11:22:42.820 回答
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

于 2015-03-13T16:47:51.613 回答
0

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

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

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

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

我希望这能帮到您。

于 2019-04-16T05:51:13.927 回答
0

当您使用 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

于 2019-06-21T02:57:56.837 回答