我有一个简单的nodejs代码,可以使用AWS Lambda函数和SES服务发送测试电子邮件。
我能够将我的功能部署到AWS,并具有所有适当的访问权限和要求......
不幸的是,每当我在AWS Lambda控制台中测试我的功能时,我都会收到错误"找不到模块' nodemailer'"这是我在下面的代码中要求的。
从我的项目结构中,我似乎已正确安装,或者可能没有安装。
我已经被困在这个问题好几天了,我在这里做错了什么?顺便说一句,我是nodejs和aws的新手。
提前谢谢。
注意:我尝试在命令中运行此功能并且工作正常,我能够收到该电子邮件。 command:node handler.js
项目截图:
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)"
]
}
答案 0 :(得分:0)
您需要确保将nodemailer
作为package.json中的依赖项之一。