找不到模块' nodemailer'在AWS Lambda中

时间:2016-06-30 03:07:24

标签: node.js amazon-web-services lambda

我有一个简单的nodejs代码,可以使用AWS Lambda函数和SES服务发送测试电子邮件。

我能够将我的功能部署到AWS,并具有所有适当的访问权限和要求......

不幸的是,每当我在AWS Lambda控制台中测试我的功能时,我都会收到错误"找不到模块' nodemailer'"这是我在下面的代码中要求的。

从我的项目结构中,我似乎已正确安装,或者可能没有安装。

我已经被困在这个问题好几天了,我在这里做错了什么?顺便说一句,我是nodejs和aws的新手。

提前谢谢。

注意:我尝试在命令中运行此功能并且工作正常,我能够收到该电子邮件。 command:node handler.js

项目截图:

Project Structure

Nodejs代码:

'use strict';

var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
  host: 'email-smtp.us-east-1.amazonaws.com',
  port: 587,
  auth: {
    user: 'USER_XXX',
    pass: 'PASSWORD_XXX'
  }
});

var text = 'Hi,\r\n\r\n'
     + 'This email is a test email!\r\n\r\n'
     + 'This is sent using NodeMailer module in Nodejs thru AWS SES SMTP Host: email-smtp.us-east-1.amazonaws.com.\r\n\r\n'
     + 'Thanks!';

var mailOptions = {
  from: 'ses@aws.net',
  to: 'me@aws.net',
  subject: 'Test Email (NodeMailer & AWS SES)',
  text: text
};

module.exports.handler = function(event, context) {
  console.log('Email Sending...');
    transporter.sendMail(mailOptions, function(error, info){
          if(error){
            console.log(error);
          }else{
            console.log('Message sent');
          }
      });
};

Lambda测试错误消息:

{
  "errorMessage": "Cannot find module 'nodemailer'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._load (module.js:276:25)",
    "Module.require (module.js:353:17)",
    "require (internal/module.js:12:17)",
    "Object.<anonymous> (/var/task/handler.js:2:18)",
    "Module._compile (module.js:409:26)",
    "Object.Module._extensions..js (module.js:416:10)",
    "Module.load (module.js:343:32)",
    "Function.Module._load (module.js:300:12)",
    "Module.require (module.js:353:17)"
  ]
}

1 个答案:

答案 0 :(得分:0)

您需要确保将nodemailer作为package.json中的依赖项之一。