【发布时间】:2025-12-25 13:40:07
【问题描述】:
我正在尝试创建一个错误处理包装器,以与 nodejs 中 express 的 promise 路由器扩展一起使用。
对于初学者,我尝试简单地包装异步处理函数:
function error_catcher(f)
{
return (async function (request, response) {
await f(request, response);
});
}
router.get("/bar", (error_catcher((async (request, response) => {
throw (new Error("bar error"));
}))()));
但是,当我运行它时,我得到:
Error: Expected a callback function but got a [object Promise]
at wrapHandler (/tmp/complete/node_modules/express-promise-router/lib/express-promise-router.js:10:15)
at /tmp/complete/node_modules/express-promise-router/lib/express-promise-router.js:87:24
at Array.map (<anonymous>)
at Function.instanceToWrap.(anonymous function) [as get] (/tmp/complete/node_modules/express-promise-router/lib/express-promise-router.js:86:38)
at Object.<anonymous> (/tmp/complete/server.js:361:8)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
因此,如果有人能指出我的错误并帮助我使异步函数的包装器工作,我应该能够自己添加异常捕获和错误处理。
【问题讨论】:
-
你试过直接用
f函数作为中间件吗?
标签: javascript node.js promise