【问题标题】:AWS lambda: "Handler 'handle' missing on module 'exports'"AWS lambda:“模块‘exports’上缺少处理程序‘handle’”
【发布时间】:2018-08-09 11:41:35
【问题描述】:

我已将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'"
} 

【问题讨论】:

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


    【解决方案1】:

    所以这是你的 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

    【讨论】:

    • 是的,但您不能在 lambda 函数中创建服务器。这将由 API Gateway 处理。
    • 它的 app.listen() 创建服务器
    • 执行结果成功,但是API网关的URL仍然报内部服务器错误。
    • 是的,您的 url 是 localhost,请查看您收到的错误消息。您不能从任何远程位置向 localhost 发送请求。因此首先托管您的 php 应用程序。
    • 不,我的意思是你要在你的 lambda 函数中访问的 url 是一个本地主机。
    【解决方案2】:

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

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

    【讨论】:

    • 事件和上下文参数是什么?以后怎么调用这个函数?
    • 在事件参数中,我们将所有参数传递给处理程序方法。比如查询参数、post、get params等来自它用来操作handler方法上下文的context参数。
    • @SameeraPiyasundara 这将如何改变我的代码的后半部分?
    猜你喜欢
    • 2021-12-16
    • 2018-04-26
    • 2016-09-04
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多