обработка обещаний лямбда и коа сервера - PullRequest
0 голосов
/ 24 сентября 2019

Я пробовал множество способов вернуть правильный ответ от лямбды, но ни один из них не сработал, в итоге я получаю «нулевой» ответ.

const Koa = require('koa');
const Router = require('koa-router');
const StaticServer = require('koa-static-server');
const BodyParser = require('koa-bodyparser');
const SSLify = require('koa-sslify');
const Ejs = require('koa-ejs');
const Config = require("Server/Config");
const PageRoutes_1 = require("Server/PageRoutes");
const app = new Koa();
exports.router = new Router();
app.use(BodyParser());
app.use(StaticServer({ rootDir: 'assets', rootPath: '/assets', last: true }));
app.use(StaticServer({ rootDir: 'dist/statics', rootPath: '/statics', last: true }));
Ejs(app, ({
    root: path.join(__dirname, '../ejs'),
    cache: Config.IS_PRODUCTION,
    layout: 'template',
    viewExt: 'ejs',
    debug: true,
}));
PageRoutes_1.default(exports.router);
app.use(exports.router.routes());
app.use(exports.router.allowedMethods());
module.exports.handler = app;

и мой index.js:

const serverless = require('serverless-http');
const app = require('MainServer');
const my_handler = serverless(app);

module.exports.handler = function(event, context, callback) {
    const response = my_handler(event, context);
    response.then(
        (data) => {
            console.log('promise resolved');
            console.log(data);
            callback(null, data);
        },
        (err) => {
            console.log('ERROR');
            console.log(err);
            callback(err);
        }
    );

}

это одна из тех вещей, которые я пытался, я тоже пробовал: я не вижу журналы

module.exports.handler = async (event, context) => {
  console.log('Im here')
  try {
        const result = await my_handler(event, context);
        console.log('Here33');
        console.log(result)
        return result;
    }
    catch (err) {
        console.log('Here4')
        console.log(err);
        return err;
    }
}

Я подключаюсь через API-шлюз, но тестирование лямбды также дает "ноль"в качестве выходных данных и, следовательно, шлюз API дает {"message": "Internal server error"}, но я думаю, что основная проблема заключается в лямбде и способе обработки обещаний.

enter image description here

...