【发布时间】:2020-09-01 22:39:55
【问题描述】:
使用 hapi 服务器,我从这样的处理程序返回:
async function handler (req, h) {
...
h.unstate(key, cookieOptions);
const resp = h.redirect(redirectUri);
return resp;
}
...但返回 HTTP 500 错误。我在堆栈跟踪中发现了失败:
ValidationError: "value" must be an object
at Object.exports.process (~/project/node_modules/hapi/node_modules/joi/lib/errors.js:201:19)
at internals.Object._validateWithOptions (~/project/node_modules/hapi/node_modules/joi/lib/types/any/index.js:751:31)
at module.exports.internals.Any.root.validate (~/project/node_modules/hapi/node_modules/joi/lib/index.js:146:23)
at exports.response (~/project/node_modules/hapi/lib/validation.js:173:31)
at Request._postCycle (~/project/node_modules/hapi/lib/request.js:356:68)
at Request._reply (~/project/node_modules/hapi/lib/request.js:335:20)
at Request._execute (~/project/node_modules/hapi/lib/request.js:171:14)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
...这似乎来自 onPostHandler 和 onPreResponse 之间的响应验证生命周期步骤。
可能是什么问题?
【问题讨论】:
-
也许
redirectUri是undefined你试过h.response().redirect()合成器吗?你能判断它是来自h.unstate()还是真的来自重定向? -
谢谢@ErnestJones,我可以确认它来自重定向,
h.response().redirect()似乎按预期工作。