gpt4 book ai didi

node.js - 如何使用 Koa 修复 Azure Functions 中的 "Choose either to return a promise or call ' did'"

转载 作者:搜寻专家 更新时间:2023-11-01 00:49:22 24 4
gpt4 key购买 nike

我正在尝试让 koa 使用 azure 函数。 “hello world”应用程序已经通过 koa 运行,但在运行开发服务器 azure 时抛出错误:

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

使用 Node 版本10.14.1

代码非常简单,如您所见,我从不显式调用 context.done() 。 koa 能以某种方式调用这个函数吗?由于 koa 的性质,删除所有 promise 并不是一个选择。当我尝试调用done时,会出现另一条错误消息:错误:'done'已被调用。请检查您的脚本是否存在对“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)
}

该应用程序工作正常,但我认为它的建议是忽略错误消息。

最佳答案

好吧,我明白了。感觉就像是黑客攻击,但它确实有效。

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

关于node.js - 如何使用 Koa 修复 Azure Functions 中的 "Choose either to return a promise or call ' did'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54627141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com