Alexa Javascript的AWS Lambda函数中的MQTT

Alexa Javascript的AWS Lambda函数中的MQTT,javascript,mqtt,aws-lambda,alexa,Javascript,Mqtt,Aws Lambda,Alexa,请帮助,我需要在lambda函数中使用mqtt协议来向代理发送一些数据。 我使用简单的代码来测试它: mqtt = require('mqtt'); var client = mqtt.connect('mqtt://test.mosquitto.org'); client.on('connect', function () { client.subscribe('presence'); client.publish('presence', 'Hello mqtt'); }); c

请帮助,我需要在lambda函数中使用mqtt协议来向代理发送一些数据。 我使用简单的代码来测试它:

mqtt = require('mqtt');
var client  = mqtt.connect('mqtt://test.mosquitto.org');

client.on('connect', function () {
  client.subscribe('presence');
  client.publish('presence', 'Hello mqtt');
});

client.on('message', function (topic, message) {
  // message is Buffer 
  console.log(message.toString());
  client.end();
});

但是我得到一个错误“找不到模块‘mqtt’”,我如何在lambda函数中包含这个模块???我如何在我的lambda中使用mqtt??某人???

首先,您将在项目目录中执行以下操作:

npm install mqtt --save 
之后,您将压缩此文件夹(文件夹、文件和子目录内)并上载到lambda函数

每次必须创建处理程序函数时,您将创建如下函数:

exports.handler  = function (event, context, callback) {
... your code...

}

在AWS面板上的lambda函数中,您将指定文件和您在
Handler
文本字段中使用的函数。

首先,您将在项目目录中执行以下操作:

npm install mqtt --save 
之后,您将压缩此文件夹(文件夹、文件和子目录内)并上载到lambda函数

每次必须创建处理程序函数时,您将创建如下函数:

exports.handler  = function (event, context, callback) {
... your code...

}


在AWS面板上的lambda函数中,您将指定文件和在
处理程序
文本字段中使用的函数。

我们需要更多的上下文,我们是在谈论nodejs吗?如果是,您是否安装了mqtt npm模块?是的,node.js和我已经安装了mqtt npm。请更新问题,详细说明您npm是如何安装mqtt模块的,以及在哪里安装的,以及您是如何/在哪里执行上面列出的代码的。该错误意味着mqtt模块未安装在需要尝试在th AWS Labda中执行代码的位置。我有我的Lambda函数和一个mqtt模块,我已经包含在Lambda函数中了。我把它安装在Ubuntu上,不知道你说的“如何”是什么意思。我们需要更多的上下文,我们是在谈论nodejs吗?如果是,您是否安装了mqtt npm模块?是的,node.js和我已经安装了mqtt npm。请更新问题,详细说明您npm是如何安装mqtt模块的,以及在哪里安装的,以及您是如何/在哪里执行上面列出的代码的。该错误意味着mqtt模块未安装在需要尝试在th AWS Labda中执行代码的位置。我有我的Lambda函数和一个mqtt模块,我已经包含在Lambda函数中了。我把它安装在Ubuntu上,不知道你的意思是“怎么做”。@Suki不客气,别忘了给答案投票。@Suki你是怎么做到的?我试过使用lambda,但没用。基本上,它没有给出任何输出<代码>“严格使用”;常量mqtt=require('mqtt');const client=mqtt.connect('mqtt://test.mosquitto.org'); module.exports.startPolling=async(事件,上下文)=>{client.on('connect',()=>{client.subscribe('presence');client.publish('presence','Hello mqtt');});client.on('message',(主题,message)=>{//message is Buffer console.log(message.toString());client.end();}
@ChandaraChea在
Lambda
的控制台上没有消息吗?您是否有另一个plase
context.success()
或其他行为?上面的代码是完整的代码?@pedro.olimpio它的行为不正确。例如,在多次触发lambda之后,它表示内存泄漏。无论如何,我通过使用异步mqtt解决了这个问题。感谢您的回答:)@pedro.olimpio我认为这种奇怪的行为是因为在Lambda中使用了回调函数,这真的很奇怪。我试过使用
setTimeout(函数(){console.log('Timeout complete')},5000)和它显示了相同的行为。它有时什么也不显示,有时显示不止一次。并且context.success()未定义。你知道为什么会这样吗?@Suki不客气,别忘了给答案投票。@Suki你是怎么做到的?我试过使用lambda,但没用。基本上,它没有给出任何输出<代码>“严格使用”;常量mqtt=require('mqtt');const client=mqtt.connect('mqtt://test.mosquitto.org');    module.exports.startPolling=async(事件,上下文)=>{client.on('connect',()=>{client.subscribe('presence');client.publish('presence','Hello mqtt');});client.on('message',(主题,message)=>{//message is Buffer console.log(message.toString());client.end();}
@ChandaraChea在
Lambda
的控制台上没有消息吗?您是否有另一个plase
context.success()
或其他行为?上面的代码是完整的代码?@pedro.olimpio它的行为不正确。例如,在多次触发lambda之后,它表示内存泄漏。无论如何,我通过使用异步mqtt解决了这个问题。感谢您的回答:)@pedro.olimpio我认为这种奇怪的行为是因为在Lambda中使用了回调函数,这真的很奇怪。我试过使用
setTimeout(函数(){console.log('Timeout complete')},5000)和它显示了相同的行为。它有时什么也不显示,有时显示不止一次。并且context.success()未定义。你知道为什么会这样吗?