Lambda函数失败,无法导入模块' index'

时间:2017-09-06 10:23:33

标签: node.js amazon-web-services lambda aws-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)

从我看来,我的代码不是问题,它是slack-incoming-webhook节点模块的问题,但是这条违规代码就是这条看起来完全正常的行。

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

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

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

我在ec2实例上尝试了npm install,我尝试了几个不同的包,我得出结论,lambda中必定存在某种配置错误,但我无法找到。有人能指出我正确的方向......

这是我的代码,如果有人好奇,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 个答案:

答案 0 :(得分:4)

这是我在许多帖子中看到的常见问题。大多数情况下,这是解压缩文件的方式。您不必压缩文件夹,而是必须选择所有文件并将其压缩如下,

enter image description here

答案 1 :(得分:0)

我只想提到使用Apex(http://apex.run/)。 与AWS Lambda一起使用的非常无服务器的框架。设置完成后,无需进行手动压缩。

只需执行几个命令:

  1. apex create(创建lambda)
  2. apex deploy(部署到您的AWS区域,无需手动压缩)
  3. apex调用从您的终端调用它。
  4. 由于