我最近在使用 express中的內(nèi)置 、 、 和 函數(shù)時遇到了req.accepts一個 req.acceptsLanguages問題req.acceptsCharsets。req.acceptsEncodings我有一個像這樣的快速中間件功能:function acceptCheckpoint(acceptOpts) { // Calling the following function results in a TypeError. function checkAccept(req, res, opts) { let acceptFunction = null; switch (opts.whichAccept) { case "type": acceptFunction = req.accepts; break; case "lang": acceptFunction = req.acceptsLanguages; break; case "charset": acceptFunction = req.acceptsCharsets; break; case "encoding": acceptFunction = req.acceptsEncodings; break; default: acceptFunction = req.accepts; break; } return acceptFunction(opts.acceptedTypes); } return (req, res, next) => { const accepted = []; Object.getOwnPropertyNames(acceptOpts).forEach(key => { if (key === "ignoreAcceptMismatch") { return; } const acceptsType = checkAccept(req, res, { whichAccept: key, acceptedTypes: acceptOpts[key] }); accepted.push(acceptsType); }); if (accepted.some(type => !type) && !acceptOpts.ignoreAcceptMismatch) { res.type("html"); res.status(406); res.send("<h1>406 Not Acceptable.</h1>"); return; } next(); };}問題是,當我在主函數(shù) ( ) 中使用req.accepts或其中一個函數(shù)時,如下所示:.acceptsacceptCheckpoint// Pretend we're in acceptCheckpoint...// This works.accepted.push(req.accepts("html"));有用。而且,當我req在這些函數(shù)中的任何一個中記錄對象時,它都會返回預(yù)期值。我還嘗試將req對象記錄request.js到 express 模塊的文件中,然后它返回了undefined. 所以這讓我相信這是表達本身的問題。我嘗試刪除 package-lock.json 和 node_modules,然后運行npm install. 沒修好。是的,我正確地調(diào)用了 express 中間件函數(shù)。知道為什么會這樣嗎?我使用的是 express v4.17.1、Node.JS v12.18.1 和 NPM v6.14.5。
在嵌套函數(shù)中使用 req.accept 時 req 未定義
汪汪一只貓
2023-01-06 09:32:49