Как исправить "Выберите, чтобы вернуть обещание или позвонить" сделано "" в функциях Azure с помощью Koa

Я пытаюсь заставить Коа работать с лазурными функциями. Приложение "hello world" уже работает через koa, но во время работы на dev-сервере azure выдает ошибку:

Choose either to return a promise or call 'done'.  Do not use both in your script.

Использование Node версии 10.14.1

Код довольно прост, как вы видите, я никогда не звоню context.done() в явном виде. Может ли Коа как-то вызвать эту функцию? Удаление всех обещаний не вариант из-за природы коа. Когда я попытаюсь выполнить вызов, появится еще одно сообщение об ошибке: Error: 'done' has already been called. Please check your script for extraneous calls to 'done'.

const Koa = require('koa')
const app = new Koa()


async function createServer(app, context, req){

    app.use(async function(ctx) {
        ctx.body = 'Hello World';
    })

    return app.callback()(req, context.res)

}

module.exports = async function (context, req) {
    return await createServer(app, context, req)
}

Приложение работает правильно, но я полагаю, что его плохой совет игнорировать сообщение об ошибке.

1 ответ

Хорошо, я понял это. Это похоже на взломать, но это работает.

const Koa = require('koa')
const app = new Koa()


async function createServer(app, context, req){

    app.use(async function(ctx) {
        ctx.body = 'Hello World';
    })

    //remove done fn from context obj so koa can not call it
    context.done = () => {}

    return app.callback()(req, context.res)

}

module.exports = async function (context, req) {
    return createServer(app, context, req)
}

Хитрость в том, чтобы переназначить context.done,

Другие вопросы по тегам