Lambda函数失败无法导入模块“索引”

错误:

Unable to import module 'index': Error at Function.Module._load (module.js:417:25) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Object.<anonymous> (/var/task/node_modules/slack-incoming-webhook/lib/index.js:3:19) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) 

通过看起来这个我的代码是不是问题这是一个问题,松散的传入webhook节点模块,但是一块有问题的代码是这条线,看起来完全正常。

 var SlackClient = require('./client'); 

我已经尝试了4个不同的包(request,http,node-webhooks和slack-incoming-webhooks),并且它们都在节点模块中都失败了。 我非常困惑,因为我可以让代码在我自己的计算机上和Amazon Linux AMI EC2实例上运行(运行相同的节点版本)

所有的代码被压缩并使用aws-cli发送到lambda,并且我已经在lambda上部署了node.js代码,没有任何问题(alexa技能)。

我已经试过在ec2实例npm安装,我已经尝试了几个不同的包,我已经得出结论必须有某种configuration错误的lambda,但我找不到什么。 有人能指点我吗?

这里是我的代码,如果有人也好奇拉姆达触发器是aws iotbutton。

 const slack = require('slack-incoming-webhook'); const send = slack({ url: 'https://hooks.slack.com/....' }); exports.handler = function () { send(process.env.company + ' has pushed their panic button! PANIC! PANIC! PANIC!'); }; 

这是我在很多post中看到的常见问题。 大多数情况下,压缩导致问题的文件就是这种方式。 而不是压缩文件夹,你必须select所有的文件,并像下面压缩,

在这里输入图像说明

我会简单地引用使用Apex( http://apex.run/ )。 与AWS Lambda一起使用的非常多的awsm无服务器框架。 一旦这个设置,不需要手动压缩。

只需执行几个命令:

  1. apex创build(创buildlambda)
  2. 顶点部署(部署到您的AWS区域,不需要手动压缩)
  3. 顶点调用从您的terminal调用它。

谢谢