Как исправить "Выберите, чтобы вернуть обещание или позвонить" сделано "" в функциях 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
,