Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AWS Lambda通过电报机器人发送文件?_Javascript_Node.js_Amazon Web Services_Aws Lambda_Telegram - Fatal编程技术网

Javascript 如何使用AWS Lambda通过电报机器人发送文件?

Javascript 如何使用AWS Lambda通过电报机器人发送文件?,javascript,node.js,amazon-web-services,aws-lambda,telegram,Javascript,Node.js,Amazon Web Services,Aws Lambda,Telegram,我正在尝试使用电报机器人发送mp3文件 当我使用终端中的节点在本地运行它时,这段代码运行得非常好: 'use strict' const Telegraf = require('telegraf') const bot = new Telegraf('Token') bot.command('audio', (ctx) => { ctx.replyWithAudio({source: './media/song.mp3'}) }) const { PORT =

我正在尝试使用电报机器人发送mp3文件

当我使用终端中的节点在本地运行它时,这段代码运行得非常好:

'use strict'
const Telegraf = require('telegraf')
const bot = new Telegraf('Token')

bot.command('audio', (ctx) => {
        ctx.replyWithAudio({source: './media/song.mp3'})
    })

const { PORT = 3000 } = process.env
bot.startWebhook('/', null, PORT)
但是,当我将其部署为AWS Lambda函数时,会出现以下错误:

  Apr 29th 12:24:12pm ERRO staging 4 events.js:183
  Apr 29th 12:24:12pm ERRO staging 4       throw er; // Unhandled 'error' event
  Apr 29th 12:24:12pm ERRO staging 4       ^
  Apr 29th 12:24:12pm ERRO staging 4
  Apr 29th 12:24:12pm ERRO staging 4 Error: write after end
  Apr 29th 12:24:12pm ERRO staging 4     at write_ (_http_outgoing.js:622:15)
  Apr 29th 12:24:12pm ERRO staging 4     at ServerResponse.write (_http_outgoing.js:617:10)
  Apr 29th 12:24:12pm ERRO staging 4     at MultipartStream.ondata (_stream_readable.js:639:20)
  Apr 29th 12:24:12pm ERRO staging 4     at emitOne (events.js:116:13)
  Apr 29th 12:24:12pm ERRO staging 4     at MultipartStream.emit (events.js:211:7)
  Apr 29th 12:24:12pm ERRO staging 4     at MultipartStream.Readable.read (_stream_readable.js:475:10)
  Apr 29th 12:24:12pm ERRO staging 4     at flow (_stream_readable.js:846:34)
  Apr 29th 12:24:12pm ERRO staging 4     at resume_ (_stream_readable.js:828:3)
  Apr 29th 12:24:12pm ERRO staging 4     at _combinedTickCallback (internal/process/next_tick.js:138:11)
  Apr 29th 12:24:12pm ERRO staging 4     at process._tickCallback (internal/process/next_tick.js:180:9)
我很确定这是因为我不明白在部署lambda函数时文件是如何存储的。如何保存目录以便我检索它们?这可能吗

我的zip包包含以下目录:


对于这个bot,我用来部署和编写代码

如果你的MP3在你上传的zip包中,那么当lambda运行时,你可以在包中找到它和其他任何东西

在lambda中,您可以通过
process.env.lambda\u TASK\u ROOT
获得包含解压包的目录。您的文件将与该文件相关

bot.command('audio', (ctx) => {
    ctx.replyWithAudio({
        source: process.env.LAMBDA_TASK_ROOT + '/media/song.mp3'
    })
})

请把剩下的代码贴出来。Lambda有512MB可供使用,使用
/tmp
。很难说你想做什么,MP3在压缩包里吗?@dpwrussell我添加了你要的信息。我不明白你告诉我如何获取zip包,而是我使用的,它给了我zip文件。对不起,出于某种原因,我用Python而不是javascript编写了它。我不是说您应该以不同的方式构建捆绑包,而是说明如何在lambda运行时获取捆绑包中的文件。我更新了答案。