我目前正在尝试在 AWS 中编写 Lambda 函数,但我不断遇到以下错误:
测试事件名称 sendContactEmailTest1
回应 { "errorType": "引用错误", "errorMessage": "require 未在 ES 模块范围内定义,您可以使用 import 代替", “痕迹”: [ “ReferenceError: require 未在 ES 模块范围内定义,您可以改用导入”, “在文件:///var/task/index.mjs:1:16”, “在 ModuleJob.run (node:internal/modules/esm/module_job:194:25)” ] }
函数日志 2023-03-03T19:25:19.161Z undefined ERROR Uncaught Exception {"errorType":"ReferenceError","errorMessage":"require is not defined in ES module scope, you can use import instead","stack":[" ReferenceError: require is not defined in ES module scope, you can use import instead"," at file:///var/task/index.mjs:1:16"," 在 ModuleJob.run (node:internal/modules/ esm/module_job:194:25)"]} 出现未知的应用程序错误 运行时.Unknown 结束 RequestId:f7c5db16-5a81-4331-a088-9a90d41a495b 报告 RequestId:f7c5db16-5a81-4331-a088-9a90d41a495b 持续时间:2534.33 毫秒计费持续时间:2535 毫秒内存大小:128 MB 使用的最大内存:17 MB
请求ID f7c5db16-5a81-4331-a088-9a90d41a495b
下面列出的是index.js文件:
const { S3 } = require("@aws-sdk/client-s3");
const aws = require("aws-sdk");
const ses = new aws.SES({ region: "us-east-1" });
exports.handler = async function (event) {
console.log('EVENT: ', event)
const params = {
Destination: {
ToAddresses: ["[email protected]"],
},
Message: {
Body: {
Text: {
Data: `Hello from Lambda!`
},
},
Subject: { Data: `Message from AWS Lambda` },
},
Source: "[email protected]",
};
return ses.sendEmail(params).promise()
};
我故意将 ToAddresses 和 Source 保留为“[email protected]”只是为了隐藏电子邮件。但它们应该只是我们用来设置 SES 的电子邮件,对吗?
错误消息表明它不喜欢您使用 require,而是使用 import。如果你想使用 require,检查你的 packages.json 文件并更改
"type":"module" or "type":"whatever_it_is_right_now" to "type":"commonjs"
这将允许 require 为您的进口工作