Javascript AWS lambda:“;处理程序';手柄';模块上缺少';出口'&引用;
我已经将一个Javascript AWS lambda:“;处理程序';手柄';模块上缺少';出口'&引用;,javascript,node.js,amazon-web-services,aws-lambda,Javascript,Node.js,Amazon Web Services,Aws Lambda,我已经将一个节点jsexpress项目上传到AWS lambda。以下是保存为exports.js的处理程序代码: const express = require('express'), bodyParser = require('body-parser'), request = require('request'), app = express().use(bodyParser.json()); // creates express http server exports.h
节点js
express项目上传到AWS lambda
。以下是保存为exports.js
的处理程序代码:
const
express = require('express'),
bodyParser = require('body-parser'),
request = require('request'),
app = express().use(bodyParser.json()); // creates express http server
exports.handler = function(callback){
request('http://localhost/php-rest/api.php/routes?filter=route_short_name', function(error, response, body) {
if (!error && response.statusCode == 200) {
message = JSON.stringify(JSON.parse(body));
return callback(message, false);
} else {
return callback(null, error);;
}
});
}
app.get('/exports.handler', function(req, res) {
exports.handler(function(err, data){
if(err) return res.send(err);
res.send(data);
});
});
处理程序代码与我的app.js
文件是分开的。在aws lambda上测试时,我发现以下错误:
{
"errorMessage": "Handler 'handler' missing on module 'exports'"
}
如果您没有索引和启动函数,则通常会出现此选项。您可以在导出处理程序中将其定义为索引:
exports.handler = function index(event, context, callback) {
// Your start code here
}
这就是lambda函数,它应该作为一个处理程序存在。在您的代码中,app.get()必须由AWS API网关处理。因为它是调用lambda函数的方法。在lambda函数中不能有nodejs服务器
因此.zip文件应命名为index.js,因为当我们上载.zip文件时,它会提取内容并找到我们提供的处理程序名称。
这些是应上载的.zip文件内容
- index.js.zip
- 节点单元
- index.js
- package.json
- package-lock.json