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

Ras*_*hik 2 javascript amazon-web-services node.js 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);
    });

});
Run Code Online (Sandbox Code Playgroud)

处理程序代码与我的app.js文件分开。在 aws lambda 上测试时出现以下错误:

{
  "errorMessage": "Handler 'handler' missing on module 'exports'"
} 
Run Code Online (Sandbox Code Playgroud)

Sam*_*y93 7

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

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

  • 索引.js.zip

    • 节点模块

    • 索引.js

    • 包.json

    • 包-lock.json