当在AWS Lambda上使用Node Express时,您可能会遇到请求体未定义的问题。这通常是由于未正确解析请求体导致的。以下是解决此问题的一种常见方法:
首先,确保您的Lambda函数已正确配置为使用API网关触发器,并且已启用了“使用代理集成”选项。这将确保Express应用程序能够正确解析请求。
下面是一个示例Lambda函数的代码,用于处理Express应用程序的请求:
const express = require('express');
const app = express();
// 解析请求体
app.use(express.json());
// 设置路由
app.get('/', (req, res) => {
res.send('Hello from Express!');
});
// 导出Lambda函数处理程序
exports.handler = async (event, context) => {
// 创建一个Promise来处理Express应用程序的请求
const promise = new Promise((resolve, reject) => {
// 创建一个假的响应对象
const res = {
send: (body) => {
// 响应成功时,将结果传递给resolve函数
resolve({
statusCode: 200,
body: JSON.stringify(body)
});
}
};
// 处理Express应用程序的请求
app(event, res, (err) => {
// 如果发生错误,将错误传递给reject函数
reject(err);
});
});
// 等待Promise的解决结果,并返回Lambda函数的响应
return promise;
};
在上面的示例中,我们首先使用app.use(express.json())
中间件来解析请求体。然后,我们使用Express来处理请求,并将结果传递给Lambda函数的响应。
请记住,您还需要确保您的Express应用程序正确处理请求和响应,并设置适当的路由。
这是一个基本的解决方法,但根据您的具体情况可能会有所不同。请根据您的应用程序的需求进行相应的调整。