2017-09-06 21 views
1

错误而失败: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) 

通过这样做我的代码看起来是没有问题的它与松弛传入-网络挂接节点模块的问题,不过这条线看起来完全正常。

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

我试图4个不同的包现在(请求,HTTP,节点网络挂接现在松弛传入-网络挂接),并且它们都与在节点的模块代码失败。我非常困惑,因为我可以让代码在我自己的计算机上和Amazon Linux AMI EC2实例上运行(运行相同的节点版本)

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

我已经尝试npm安装在ec2实例上,我已经尝试了几个不同的包,我已经得出结论,lambda中必须存在某种配置错误,但是我找不到什么。有人可以指点我在正确的方向...

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

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!'); 
}; 

回答

2

这是我在许多帖子中看到的常见问题。大多数情况下,这是压缩造成问题的文件的方式。相反荏苒的文件夹,您必须选择所有文件和压缩它像下面,

enter image description here

+0

谢谢你,这是很奇怪的,因为当我编写我的Alexa的技能我在完全相同的方式和Alexa技能作品拉链拉上。 – user2710382

0

我只想参考使用的Apex(http://apex.run/)。 与AWS Lambda一起使用的非常多的awsm无服务器框架。一旦设置完成,不需要手动压缩。

只需执行几个命令:

  1. 顶点创建(创建拉姆达)
  2. 顶点部署(部署到您的AWS区域,荏苒无需手动)
  3. 顶点调用从调用它你的终端。

感谢