AWS lambda:“模块'exports'上缺少处理程序'handle'”

时间:2018-08-08 20:47:54

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

我已将node js个快递项目上传到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'"
} 

2 个答案:

答案 0 :(得分:2)

如果您没有索引和启动功能,通常会出现。您可以在导出处理程序中将其定义为索引:

exports.handler = function index(event, context, callback) {
    // Your start code here
}

答案 1 :(得分:2)

enter image description here 所以这是您的lambda函数,应该作为处理程序存在。在您的代码中,app.get()必须由AWS API Gateway处理。因为它是lambda函数的调用方法。您不能在lambda函数中使用nodejs服务器。

因此,.zip文件应命名为index.js,因为当我们上载.zip文件时,它将提取内容并找到我们提供的处理程序名称。 这些是应该上传的.zip文件内容。

  • index.js.zip

    • node_modules

    • index.js

    • package.json

    • package-lock.json