我已安装'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)"
答案 0 :(得分:3)
这是Node开发人员面临的常见问题。在Unix系统上工作时,有时可能不允许您安装此类软件包。为此,您将需要sudo
权限。有时,仅在本地模块中安装了该软件包,并且当您尝试从目录外部导入该软件包时,会发生错误。有时,您的编译器会读取您的依赖项,但无法在其中找到此程序包,这时您还会遇到此错误。
无论如何,不用担心。您只需要按照以下步骤操作即可。
initialize
npm init
进行项目。这将初始化您的项目并生成package.json
文件。然后,如果希望将任何库作为依赖项,请尝试使用--save
命令进行npm install
。这会将您的依赖项保存在package.json
文件中。
例如npm install mqtt --save
如果在安装后未找到任何软件包,请通过-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
答案 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