var mqtt = require(' mqtt');导致错误

时间:2013-09-19 14:06:26

标签: node.js mqtt

我已安装'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 个答案:

答案 0 :(得分:3)

这是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权限才能全局安装。

我希望这会对您有所帮助。

答案 1 :(得分:2)

要求Node.js模块,请参阅本教程,该教程非常详细 http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm

顺便说一下,mqtt模块已弃用createClient(),而是使用connect()

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

在将命令行用于node.js时,它将搜索全局安装的节点模块,这些节点模块通常位于Linux计算机中的/ usr / lib / node_modules目录中。 运行npm install时,节点模块将本地安装在启动节点终端的目录中。 如果要访问节点终端中的节点模块,则需要运行npm install mqtt -g,其中-g表示全局安装。 通常,Linux计算机不允许普通用户访问/ usr / lib / node_modules,因此最好以sudo npm install mqtt -g

的身份运行它。